Django व्यवस्थापक ManyToMany इनलाइन "त्रुटि के लिए कोई विदेश नहीं है"


91

मैं निम्नलिखित मॉडलों के लिए Django व्यवस्थापक की स्थापना कर रहा हूं:

class Quote(models.Model):                                                  
    author = models.CharField(max_length=100)                               
    quote = models.CharField(max_length=1000)                               
    tags = models.ManyToManyField('Tag')                                    

class Tag(models.Model):                                                    
    name = models.CharField(max_length=100)                                 

निम्नलिखित कोड के साथ:

class TagInline(admin.TabularInline):                                                                                               
    model = Tag                                                             

class QuoteAdmin(admin.ModelAdmin):                                         
    list_display = ('author', 'quote')                                      
    inlines = (TagInline,)                                                  

class TagAdmin(admin.ModelAdmin):                                           
    pass                                                                    

admin.site.register(Quote, QuoteAdmin)                                      
admin.site.register(Tag, TagAdmin)

जब जोड़ने के लिए व्यवस्थापक पृष्ठ को देखने की कोशिश की जा रही है Quote, तो पृष्ठ एक त्रुटि कह रहा है <class 'quotes.models.Tag'> has no ForeignKey to <class 'quotes.models.Quote'>। इससे पहले कि मैं एक इनलाइन जोड़ा, ऐसा नहीं हुआ। समस्या क्या है? मैं Tagइनलाइन के रूप में सही तरीके से कैसे जोड़ूँ ?

(मैंने जवाब के लिए खोज करते हुए एक अच्छा 20 मिनट बिताया; मुझे भी इसी तरह के सवाल मिले लेकिन उनके जवाब में से किसी ने भी मेरे लिए काम नहीं किया।)


जवाबों:


152

व्यवस्थापक प्रलेखन में कई-से-कई रिश्तों के साथ इनलाइनिंग के लिए समर्पित एक अनुभाग है। आपको स्वयं के बजाय Quote.tags.throughएक मॉडल के रूप में उपयोग करना चाहिए ।TagInlineTag


अगर मेरे पास एक मोडल है जिसमें कई हैं manytomany field, तो इसका मतलब है कि हर एक के लिए इसकी ज़रूरत है Inlineऔर वे अलग हैं?
सिनुक्स

4
@Rmatt कई-से-कई संबंधों को उलट देने के लिए model = Tag.quote_set.related.through
Manh Tai

क्या डीबी में बहुत संभावित पंक्ति को सूचीबद्ध करने के बजाय कच्चे आईडी के रूप में मॉडल के माध्यम से बनाने के लिए एक चाल है?
mlissner

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