Python 动态填充的Django字段不显示选项
我想从存储过程动态填充Django ChoiceField。但是,我无法在Django管理员中显示结果。结果是一片空白。我错过了什么?对不起,如果我问了一个已经回答过的问题。我已经看了又看Python 动态填充的Django字段不显示选项,python,django,Python,Django,我想从存储过程动态填充Django ChoiceField。但是,我无法在Django管理员中显示结果。结果是一片空白。我错过了什么?对不起,如果我问了一个已经回答过的问题。我已经看了又看 class Plot(models.Model): plot_claim_type = models.CharField('Plot Claim Type', max_length=7) class PlotAdminForm(forms.ModelForm): def __init__(s
class Plot(models.Model):
plot_claim_type = models.CharField('Plot Claim Type', max_length=7)
class PlotAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(PlotAdminForm, self).__init__(*args, **kwargs)
c = connection.cursor()
try:
c.execute("BEGIN")
c.callproc("udf_getcodetypes", "1")
results = c.fetchall()
for o in results:
self.base_fields['plot_claim_type'].choices = forms.MultipleChoiceField(choices=(o[0], str(o[1])))
finally:
c.close()
@admin.register(Plot)
class PlotAdmin(admin.ModelAdmin):
form = PlotAdminForm
您在结果中的循环是赋值和重新赋值,因此您只需要一个赋值(最后一个
o
在results
中)。您不能将字段
类型分配给选项
,这是没有意义的
只需尝试以下操作(而不是在结果中对o执行,
循环):
您在结果中的循环是赋值和重新赋值,因此您只需要一个赋值(最后一个
o
在results
中)。您不能将字段
类型分配给选项
,这是没有意义的
只需尝试以下操作(而不是在结果中对o执行,
循环):
您不能将
多回音字段
分配给选项
。您只需要将其分配给self.fields['plot\u claim\u type']
。但是您的循环也是错误的,因为您只分配了最后一个o
,无法将多回音字段
分配给选项
。您只需要将其分配给self.fields['plot\u claim\u type']
。但是您的循环也是错误的,因为您只是分配了最后一个o
results = c.fetchall()
self.fields['plot_claim_type'] = forms.MultipleChoiceField(choices=(
(o[0], str(o[1])) for o in results))