关于模型:在 Django 的管理面板中添加相关字段实例

Add related field instance from admin panel in Django

假设我想要 3 个这样的课程:

1
2
3
4
5
6
7
8
9
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:

中执行以下操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 管理表单中的所有数据,而是会弹出窗口,您可以在其中插入数据。这是控制插入数据的工作流程和编写几行代码之间的良好折衷 (IMO)。