是因为Django admin在渲染表单时只会使用模型字段的默认值,而不会执行与该字段相关的动态选择逻辑。为了解决这个问题,可以通过自定义admin表单来实现动态选择。
首先,需要创建一个自定义的表单类,继承自Django admin的ModelForm。在表单类中,可以重写字段的初始化方法,以实现动态选择。
from django import forms
from django.contrib import admin
from .models import YourModel
class YourModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(YourModelForm, self).__init__(*args, **kwargs)
# 在这里可以根据需要进行动态选择的逻辑
# 例如,根据其他字段的值来动态选择choiceField的选项
# self.fields['choiceField'].choices = your_dynamic_choices
class YourModelAdmin(admin.ModelAdmin):
form = YourModelForm
admin.site.register(YourModel, YourModelAdmin)
在上述代码中,我们创建了一个自定义的表单类YourModelForm
,并在__init__
方法中对choiceField
字段进行了动态选择。你可以根据具体的业务需求,在__init__
方法中编写逻辑来动态设置choiceField
的选项。
然后,我们将自定义的表单类YourModelForm
与Django admin的ModelAdmin类YourModelAdmin
关联起来,并将其注册到admin站点中。
通过以上步骤,Django admin将使用自定义的表单类来渲染表单,并且可以根据动态选择逻辑来设置choiceField
字段的选项。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云数据库MySQL版、腾讯云对象存储(COS)。
腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
腾讯云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
领取专属 10元无门槛券
手把手带您无忧上云