本と著者のモデルがあるとしましょう。
class Author(models.Model):
name = CharField(max_length=100)
class Book(models.Model):
title = CharField(max_length=250)
authors = ManyToManyField(Author)
各本に複数の著者を持たせたいのですが、Django管理サイトで、編集ページから1冊の本に複数の新しい著者を一度に追加できるようにしたいのです。著者に本を追加する必要があります。
これは可能ですか?もしそうなら、それを達成するための最良および/または最も簡単な方法は何ですか?
私があなたを正しく理解しているなら、あなたが望むことをするのは非常に簡単です:
アプリディレクトリ内にadmin.pyファイルを作成してから、次のコードを記述します。
from Django.contrib import admin
from myapps.models import Author, Book
class BookAdmin(admin.ModelAdmin):
model= Book
filter_horizontal = ('authors',) #If you don't specify this, you will get a multiple select widget.
admin.site.register(Author)
admin.site.register(Book, BookAdmin)
これを試して:
_class AuthorInline(admin.TabularInline):
model = Book.authors.through
verbose_name = u"Author"
verbose_name_plural = u"Authors"
class BookAdmin(admin.ModelAdmin):
exclude = ("authors", )
inlines = (
AuthorInline,
)
_
作成者が多い場合は、raw_id_fields = ("author", )
をAuthorInline
に追加する必要があるかもしれません。
さて、 インラインでの多対多の使用法に関するDjangoドキュメント をチェックしてください。