【问题标题】:In Django admin, what's the easiest way to display a list of objects not relationally bound on an edit form?在 Django admin 中,显示未在编辑表单上关联绑定的对象列表的最简单方法是什么?
【发布时间】:2014-11-17 00:22:21
【问题描述】:

在模型的编辑表单上,我想显示模型中的其他对象的列表,该模型与该对象没有关系绑定,但确实有一个我想根据该模型中的值查找的字段.我希望第二个模型以与该模型的列表视图相同的方式显示为列表,仅根据主模型上的特定值过滤子集。不需要能够编辑其他模型的任何字段,实际上这并不可取。

有没有一种简单的方法可以在 admin.py 中执行此操作而不必弄乱管理模板?

【问题讨论】:

  • 是否存在关联两个模型的外键?或者是什么关系?
  • 没有 @joelgoldstick ,这就是为什么我说它们没有关系绑定。我更感兴趣的是如何显示结果而不是如何进行查找。
  • 不完全确定您的用例是什么。也许您可以使用自定义字段来做到这一点。所以,没有简单的方法:-(。

标签: django django-admin


【解决方案1】:

我在这里遇到了一个类似的问题:How can I list all foreign key related objects in Django admin panel?,我对其进行了修改以处理变更表格。

class QuestionAdmin(admin.ModelAdmin):
    readonly_fields = ()

    def choices(self, instance):
        html = ''
        choice_list = Choice.objects.all().filter(question=instance)
        for obj in choice_list:
            html += '<p>%s</p>' % obj.choice_text
        return html

    choices.allow_tags = True

    def get_readonly_fields(self, requst, obj=None):
        if obj:
            return self.readonly_fields + ('choices',)
        return self.readonly_fields

正在发生的事情是将信息添加到表单中,它必须是只读的。因此 get_readonly_fields 方法仅在更改对象时将选择字段添加到管理员中。加载选项后,它会根据您想要的任何条件进行搜索,并将它们显示为 HTML。

模型基于 djangoproject 上的 django 教程,但如果您愿意,我可以将完整的应用程序发送给您。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
  • 2011-02-17
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
相关资源
最近更新 更多