在Django Admin中创建多个相关对象

时间:2018-04-28 10:56:07

标签: django django-admin

我正在使用Django 2.0

我有两个型号

class Chapter(models.Model):
    course = models.ForeignKey(Course, on_delete=models.CASCADE)
    name = models.CharField(max_length=250, blank=False)
    created_by = models.ForeignKey(User, on_delete=models.CASCADE)

    class META:
        verbose_name_plural = 'chapters'
        db_table = 'chapters'

    def __str__(self):
        return self.name

class ChapterQuestion(models.Model):
    chapter = models.ForeignKey(Chapter, on_delete=models.CASCADE)
    word = models.CharField(max_length=250)
    definition = models.CharField(max_length=250)

    class META:
        verbose_name_plural = 'chapter questions'
        db_table = 'chapter_questions'

    def __str__(self):
        return self.word

由于每个ChapterQuestion只属于一个Chapter,我认为它可能是Many-to-one关系。

我的 admin.py 仅包含

admin.site.register(Chapter)
admin.site.register(ChapterQuestion)

我希望能够在使用Django Admin创建/编辑章节时添加/编辑多个问题。

但Django Admin仅显示chapter个字段

enter image description here

此外,我希望created_by列由登录用户自动填写并从表单中删除。

1 个答案:

答案 0 :(得分:1)

您需要使用内联表单

class ChapterQuestionInline(admin.StackedInline):
    model = ChapterQuestion

@admin.register(Chapter)
class ChapterAdmin(admin.ModelAdmin):
    list_display = ["course","name","created_by"]
    inlines = [ChapterQuestionInline]