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!


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')

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.