Django管理表单字段 - 在选择框中显示依赖于对象的查询结果

时间:2014-11-26 22:34:41

标签: python django forms django-forms django-admin

我在模型中有一个CharField类型的Django表单字段。 我希望用几个不同的数据库表中的项目填充它,取决于正在编辑的当前模型

我知道我可以使用formfield_for_choice_fieldwidgets覆盖,,但这还不够 - 我没有获得当前编辑的对象(甚至是其ID)

1 个答案:

答案 0 :(得分:1)

找到解决方案:

class MyAdminModelForm(ModelForm):
    class Meta(object):
        model = MyModel

    def __init__(self, *args, **kwargs):
        super(MyAdminModelForm, self).__init__(*args, **kwargs)

        if not self.instance.pk:
            return # don't fetch related choices for new objects

        current_event = self.instance.event
        self.fields['route'] = ChoiceField(choices=OtherModel.objects.filter(event=current_event).values_list('id', 'title'))


@admin.register(MyModel)
class MyModelAdmin(ModelAdmin):
    form = MyAdminModelForm