【发布时间】:2015-02-09 04:47:50
【问题描述】:
假设我有模型:
Class Author(models.Model):
id = models.PositiveIntegerField()
dob = models.DateField()
Class Note(models.Model):
note = models.TextField()
author = models.ForeignKey(Author)
Class Book(models.Model):
name = models.CharField()
pubdate = models.DateField()
author = models.ForeignKey(Author)
在 admin.py 中:
Class BookInline(admin.StackedInline):
model = Book
Class NoteInline(admin.StackedInline):
model = Note
Class AuthorAdmin(admin.ModelAdmin):
model = Author
inlines = [BookInline, NoteInline]
Class BookAdmin(admin.ModelAdmin):
model = Book
用户需要从 AuthorAdmin 页面输入数据,并且有一个用于输入图书数据的内联。
理想情况下,我希望注释文本字段成为 Book 模型的一部分,但大多数时候不太可能使用它。
所以我想为了数据库效率,我会把它移到一个单独的表中。在没有正常工作的嵌套内联的情况下(我尝试了现有的包并遇到了已知的错误),上面的设置可以工作(即,将注释附加到作者而不是书)。
但是,当我使用 BookAdmin 时,我看不到任何注释(因为它是 Author 的外键,而不是 Book)。有没有办法编辑给定书籍记录中与作者相关的任何注释?
更新
基于下面的 cmets,我在 Note 中添加了以下外键:Class Note(models.Model):
note = models.TextField()
author = models.ForeignKey(Author)
book = models.ForeignKey(Book)
然后Class BookAdmin(admin.ModelAdmin):
model = Book
inlines = [NoteInline]
这允许我从 BookAdmin 中访问查看注释字段。
但是,当我从 AuthorAdmin 输入笔记时,而不是在 BookAdmin 中显示该笔记时,会显示一个新的空白笔记字段。
我做错了什么?
【问题讨论】:
标签: django django-admin