Как включить встроенный ManyToManyFields на моем сайте администратора Django?
Скажем, у меня есть книги и авторские модели.
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)
Ответ 2
Попробуйте следующее:
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
, если у вас много авторов.
Ответ 3
Хорошо, просмотрите Django docs для многих и многих пользователей с встроенными линиями.