Saya sedang menyiapkan admin Django ke model berikut:
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)
Dengan kode berikut:
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)
Saat mencoba untuk melihat halaman admin untuk menambahkan Quote
, halaman tersebut menunjukkan kesalahan yang mengatakan <class 'quotes.models.Tag'> has no ForeignKey to <class 'quotes.models.Quote'>
. Ini tidak terjadi sebelum saya menambahkan sebaris. Apa masalahnya? Bagaimana cara menambahkan dengan benar Tag
sebagai sebaris?
(Saya menghabiskan 20 menit mencari jawaban; Saya menemukan pertanyaan serupa tetapi tidak ada jawaban mereka yang berhasil untuk saya.)
django
django-models
Humphrey Bogart
sumber
sumber
Jawaban:
Dokumentasi admin memiliki bagian yang didedikasikan untuk sejalan dengan hubungan banyak-ke-banyak. Anda harus menggunakan
Quote.tags.through
sebagai modelTagInline
, bukan modelTag
itu sendiri.sumber
manytomany field
, artinya untuk masing-masing modal itu butuhInline
dan beda-beda?model = Tag.quote_set.related.through