通过Django Admin中的内联显示编辑/添加外键对象

ste*_*eph 7 django django-admin

我的Complete_Book模型有Book的外键.本书是我在已安装的应用程序中使用的内容(因此,"外部应用程序")我希望能够直接从Complete_Book管理员编辑/创建"预订".这可能吗?我无法使用内联,因为我的外键关系是内联允许的"向后".

我的问题与此问题中解释的相同(Django admin内联显示但外键具有相反的关系)但我无法按照该答案中的建议重构我的模型.还有其他方法吗?谢谢您的帮助!

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)
Run Code Online (Sandbox Code Playgroud)

lyn*_*ynx 7

django_reverse_admin是一个 django 模块,用于解决需要内联关系是“错误”方向的问题。

你需要将它添加到你的 requirements.txt 然后导入它:

管理文件

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)
Run Code Online (Sandbox Code Playgroud)


dyl*_*rei 2

是的,这实际上很容易。只需确保为 Book 注册一个 ModelAdmin,管理员就会向 Complete_Book 管理添加一个 + 按钮,以便您创建一本新书。

  • 抱歉,我不清楚 - 我的意思是我希望能够在同一窗口中编辑/添加新的图书信息。我不想单击“+”,然后进入新窗口...我希望图书字段(标题、作者、年份)与 Complete_Book 字段一起显示在右侧...? (2认同)