Django yöneticisi ManyToMany satır içi "için ForeignKey yok" hatası


92

Django yöneticisini aşağıdaki modellere ayarlıyorum:

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)                                 

Aşağıdaki kodla:

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)

A eklemek için yönetici sayfasını görüntülemeye çalışırken Quote, sayfa bir hata mesajı veriyor <class 'quotes.models.Tag'> has no ForeignKey to <class 'quotes.models.Quote'>. Satır içi eklemeden önce bu gerçekleşmedi. Sorun ne? TagBir satır içi olarak nasıl doğru bir şekilde eklerim ?

(Bir cevap aramak için 20 dakika harcadım; benzer sorular buldum ama cevaplarının hiçbiri benim için işe yaramadı.)


Yanıtlar:


154

Yönetici belgelerinde , çoktan çoğa ilişkilerle satır içi yapmaya ayrılmış bir bölüm vardır. Kendisi yerine Quote.tags.throughbir model olarak kullanmalısınız .TagInlineTag


Çok sayıda olan bir modelim varsa manytomany field, bu her biri için bir modele ihtiyacı olduğu Inlineve farklı oldukları anlamına gelir ?
Sinux

4
@Rmatt Çoktan çoğa ilişkileri tersine çevirmek içinmodel = Tag.quote_set.related.through
Manh Tai

Geçiş modelinin DB'de çok olası bir satırı listelemek yerine ham bir kimlik alanı olarak görünmesini sağlamanın bir hile var mı?
mlissner

ve bu yüzden Django'yu sevmeye başladım
Daniel W.
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.