Django:内联中的程序化字段

时间:2013-10-28 22:55:56

标签: python django

从这个问题扩展:Can "list_display" in a Django ModelAdmin display attributes of ForeignKey fields?,是否可以做这样的事情:

class MyModelInline(admin.StackedInline):
    model  = MyModel
    extra  = 1
    fields = ('my_field',)

    def my_field(self, obj):
        return obj.one_to_one_link.my_field

如果这样的事情是可能的,它将解决我当前的大多数Django问题,但上面的代码不起作用:Django(正确地)抱怨表单中没有my_field

1 个答案:

答案 0 :(得分:1)

您可以这样做,但您还必须将my_field添加到MyModelInline班级的readonly_fields属性中。

fields = ('my_field',)
readonly_fields = ('my_field',)

来自docs

  

与list_display不同,fields选项可能只包含模型上的字段名称或表单指定的表单。它只有在readonly_fields中列出时才包含callables。

如果您需要该字段可编辑,您应该可以使用自定义表单执行此操作,但处理它需要更多的工作。