假设我有模特:
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模型的一部分,但大多数时候它不太可能被使用。
所以我认为为了数据库效率,我会把它移到一个单独的表中。如果没有正确工作的嵌套内联(我尝试了现有的软件包并遇到了已知的错误),上面的设置就可以了(即将Note附加到Author而不是Book)。
然而,当我使用BookAdmin时,我看不到任何音符(因为它是作者的外键,而不是Book)。有没有一种方法可以编辑给定书籍记录中与作者相关的任何笔记?
根据以下评论,我添加了以下外键注意:
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中显示此注释,而是显示一个新的空白注释字段。
我做错了什么?
答案 0 :(得分:0)
我认为如果书籍和笔记之间存在关系。它应该在域模型中表示。如果笔记总是有书,那么它们应该与书而不是作者有关系。
文档建议使用generic relations as an inline,但这将是一种荒谬的限制和回合方法。