Django: Reverse Accessors für das Zusammenstoßen von Fremdschlüsseln

112

Ich habe zwei Django-Modelle, die von einer Basisklasse erben:

- Request
    - Inquiry
    - Analysis

Die Anforderung enthält zwei Fremdschlüssel für das integrierte Benutzermodell.

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

Aus irgendeinem Grund erhalte ich den Fehler

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

Alles, was ich gelesen habe, besagt, dass das Festlegen von den related_nameKonflikt verhindern sollte, aber ich erhalte immer noch den gleichen Fehler. Kann sich jemand vorstellen, warum dies passieren würde? Vielen Dank!

rauben
quelle
1
Können Sie bitte Ihre Modelldefinitionen, einschließlich Inquiryund Analysisund ihre Beziehung zuRequest
dm03514
aktualisierter Link für verwandten Namen in Django 1.9
Seb

Antworten:

138

Das related_namewürde sicherstellen, dass die Felder nicht miteinander in Konflikt stehen, aber Sie haben zwei Modelle, von denen jedes beide Felder hat. Sie müssen den Namen des konkreten Modells in jedes Modell einfügen, was Sie mit einer speziellen Zeichenfolgenersetzung tun können :

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')
Daniel Roseman
quelle
1
Der Link in Ihrer Antwort ist tot.
Matt D
2
@MatthewDrill Ich habe eine Bearbeitung eingereicht, um sie zu korrigieren. In der Zwischenzeit versuchen Sie es mit docs.djangoproject.com/de/1.10/topics/db/models/…
Ivan
Gute Antwort! Danke dir!
Tms91