从 Django 的管理面板添加相关字段实例

Add related field instance from admin panel in Django

假设我想要 3 个这样的 类:

class Book(models.Model):
    # ...

class Author(models.Model):
    # ...

class BookAuthor(models.Model):
    book = models.ForeignKey(Book)
    author = models.ForeignKey(Author)

我想要的是能够从 Book 模型的管理面板添加(并查看添加的)。 -我怎样才能在 Django 中做到这一点?

我认为执行此操作的优雅方法是在不同的应用程序中实现视图。但是这个项目只会被管理员用作数据收集工具。所以我不想实现用户界面,因此从管理面板处理所有事情。那么 Django 的管理员是否可以使用这个(链接模型)?

感谢您的帮助!

我的建议是在您的管理视图中使用 Inlines ( https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin )

您可以在 admin.py 中执行类似以下操作:

from django.contrib import admin

from ... import Book, BookAuthor, Author

class BookAuthorInline(admin.TabularInline):
    model = BookAuthor
    extra = 1
    raw_id_fields = ( "book", "author", ) 

class BookAdmin(admin.ModelAdmin):
    ...
    inlines = [
        BookAuthorInline,
    ]

这样您就不会在 Book 管理表单中插入 "directly" 所有数据,但它会弹出 windows 您可以插入数据的地方。这是控制插入数据的工作流程和编写几行代码之间的一个很好的折衷方案 (IMO)。