2011-06-25 28 views
58
Django aşağıdaki modellere yönetici kuruyorum

: Aşağıdaki kod ileDjango yönetici ManyToMany satır içi "hayır ForeignKey sahiptir" hata

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) 

görüntülemeye çalışıyor Bir Quote eklemek için yönetici sayfası, sayfa <class 'quotes.models.Tag'> has no ForeignKey to <class 'quotes.models.Quote'> söyleyerek bir hata gösterir. Bir satır içi eklemeden önce bu olmadı. Sorun ne? Satır içi olarak Tag doğru bir şekilde nasıl ekleyebilirim?

(ı bir cevap ararken iyi bir 20 dakika geçirdi, ben benzer sorular bulundu ancak cevapların hiçbiri benim için çalıştı.)

+0

http://stackoverflow.com/questions/5345673/django-no-foreignkey-but-its-a-manytomanyfield – Tobu

cevap

101

Admin documentation birçok çoğa ilişkilerle inlining adanmış bir bölüm vardır . Tag yerine, TagInline için Quote.tags.through modelini kullanmalısınız.

+7

Tersine birçok2many ilişkisini nasıl ele alıyorsunuz? – Rmatt

+0

Çok sayıda "çoktomani alanı" olan bir modelim varsa, bu her biri için bir 'Inline' anlamına gelir ve farklı mıdır? – Sinux

+1

@Rmatt Çoktan çoğa ilişkileri tersine çevirmek için 'model = Tag.quote_set.related.through' –

İlgili konular