Django: yabancı anahtarların çakışması için ters erişimciler


113

Bir temel sınıftan miras alan iki Django modelim var:

- Request
    - Inquiry
    - Analysis

İsteğin yerleşik Kullanıcı modeline yönelik iki yabancı anahtarı vardır.

create_user = models.ForeignKey(User, related_name='requests_created')
assign_user = models.ForeignKey(User, related_name='requests_assigned')

Nedense hata alıyorum

Reverse accessor for 'Analysis.assign_user' clashes with reverse accessor for 'Inquiry.assign_user'.

Okuduğum her şey, ayarlamanın related_nameçatışmayı engellemesi gerektiğini söylüyor , ancak yine de aynı hatayı alıyorum. Bunun neden olacağını kimse düşünebilir mi? Teşekkürler!


1
Aşağıdakiler dahil modeliniz tanımlarını gönderebilir misiniz Inquiryve Analysisve onların ilişkisiRequest
dm03514

Django 1.9'da ilgili ad için güncellenmiş bağlantı
Seb

Yanıtlar:


138

Bu related_name, alanların birbiriyle çakışmamasını sağlar, ancak her biri bu alanların her ikisine de sahip olan iki modeliniz vardır. Her birine somut modelin adını koymanız gerekir, bunu özel bir dizi ikamesi ile yapabilirsiniz :

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')

1
Cevabınızdaki bağlantı öldü.
Matt D

2
@MatthewDrill Düzeltmek için bir düzenleme gönderdim, bu arada docs.djangoproject.com/en/1.10/topics/db/models/…
Ivan

Mükemmel cevap! Teşekkür ederim!
Tms91
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.