我有一个特殊情况,用户应该能够更改交易的状态,但不能更改deal_type
. 因此,我想我将下拉列表的小部件更改为文本字段。
因此,我想在我的表单集中覆盖 deal_type 的小部件,然后将其子类BaseModelFormSet
化并将其作为参数传递给工厂:
deal_formset = modelformset_factory(Deal, formset=BaseDealFormSet, fields = {'status', 'deal_type'}, extra=0)
class Deal(models.Model):
deal_id = UUIDField()
status = models.ForeignKey(DealStatus)
deal_type = models.ForeignKey(DealType)
class BaseDealFormSet(BaseModelFormSet):
deal_type = forms.CharField(max_length=30, widget=forms.TextInput( attrs={'readonly': 'True'}))
def clean_deal_type(self):
return self.instance.deal_type
但是,在模板{{fs.deal_type}}
中,小部件仍显示为下拉列表,而不是文本字段。
我什至不确定,如果这完全按照我的预期工作,那就是将下拉列表的选定值视为文本字段。但至少我应该看到小部件的变化,对吧?但它似乎完全被忽略了。
我错过了什么?谢谢,