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

时间:2015-10-27 14:07:02

标签: django model admin

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

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

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

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

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

我认为这样做的优雅方法是在不同的应用中实现视图。但是这个项目只会被管理员用作数据收集工具。所以我不想实现用户界面,因此从管理面板处理所有内容。那么(链接模型)可以与Django的管理员一起使用吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我的建议是在管理员视图中使用Inlinehttps://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,
    ]

这样你就不会直接插入""书籍管理表单中的所有数据,但它弹出窗口,您可以在其中插入数据。在控制插入数据的工作流程和编写几行代码之间,这是一个很好的妥协(IMO)。

相关问题