我在模型中有一个CharField类型的Django表单字段。 我希望用几个不同的数据库表中的项目填充它,取决于正在编辑的当前模型。
我知道我可以使用formfield_for_choice_field
或widgets
覆盖,,但这还不够 - 我没有获得当前编辑的对象(甚至是其ID)
答案 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