Django: विदेशी कुंजी के लिए रिवर्स एक्सेसर्स क्लैशिंग


113

मेरे पास दो Django मॉडल हैं जो एक बेस क्लास से विरासत में मिलते हैं:

- Request
    - Inquiry
    - Analysis

अनुरोध में निर्मित उपयोगकर्ता मॉडल में दो विदेशी कुंजियाँ हैं।

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

किसी कारण से मुझे त्रुटि हो रही है

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

मैंने जो कुछ पढ़ा है वह कहता है कि सेटिंग related_nameको क्लैश रोकना चाहिए, लेकिन मुझे अभी भी वही त्रुटि मिल रही है। क्या कोई सोच सकता है कि ऐसा क्यों हो रहा होगा? धन्यवाद!


1
आप अपने मॉडल परिभाषाओं पोस्ट, कृपया सहित Inquiryऔर Analysisऔर के साथ उनके संबंधRequest
dm03514

Django 1.9 में संबंधित नाम के लिए अद्यतन लिंक
सेब 21

जवाबों:


138

यह related_nameसुनिश्चित करेगा कि क्षेत्र एक-दूसरे के साथ संघर्ष नहीं कर रहे थे, लेकिन आपके पास दो मॉडल हैं, जिनमें से प्रत्येक में दोनों क्षेत्र हैं। आपको प्रत्येक में कंक्रीट मॉडल का नाम डालने की आवश्यकता है, जिसे आप कुछ विशेष स्ट्रिंग प्रतिस्थापन के साथ कर सकते हैं :

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

1
आपके उत्तर की लिंक मृत है।
मैट डी

2
@MatthewDrill मैंने इसे ठीक करने के लिए एक संपादन प्रस्तुत किया, इस बीच docs.djangoproject.com/en/1.10/topics/db/models/…
Ivan

बहुत बढ़िया जवाब! धन्यवाद!
Tms91
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.