我的Complete_Book模型有Book的外键。本书是我在已安装的应用程序中使用的内容(因此,“外部应用程序”)我希望能够直接从Complete_Book管理员编辑/创建“预订”。这可能吗?我无法使用内联,因为我的外键关系是内联允许的“向后”。
我的问题与此问题(Django admin inline display but foreign key has opposite relation)中解释的相同,但我不能按照答案中的建议重构我的模型。还有其他方法吗?谢谢你的帮助!
models.py
class Complete_Book(models.Model):
topic = models.ForeignKey('topic')
book = models.ForeignKey(Book)
is_primary = models.BooleanField()
subprogram_name = models.CharField(max_length = 256, blank=True)
class Book(models.Model):
title = models.CharField(max_length=512)
authors = models.CharField(max_length=2048)
year = models.PositiveIntegerField(max_length=4)
答案 0 :(得分:4)
django_reverse_admin是一个django模块,用于解决需要内联的问题,其中关系是错误的'方向。
您需要将其添加到您的requirements.txt然后导入它:
admin.py
from django_reverse_admin import ReverseModelAdmin
class Complete_Book(ReverseModelAdmin):
# usual admin stuff goes here
inline_type = 'tabular' # or could be 'stacked'
inline_reverse = ['book'] # could do [('book', {'fields': ['title', 'authors'})] if you only wanted to show certain fields in the create admin
admin.site.register(Book, Complete_Book)
答案 1 :(得分:1)
是的,这实际上非常简单。请务必注册ModelAdmin for Book,管理员将在Complete_Book管理员中添加一个+按钮,以便您创建新书。