我正在尝试使 CreateView 具有一个具有设定值的只读字段,但我无法使其工作。
我有一个带有 ForeignKey 到另一个模型的模型:
class CompanyNote(TimeStampedModel):
company = models.ForeignKey(Company)
note = models.TextField(blank=True)
我有一个 CreateView:
class CompanyNoteCreateView(CreateView):
model = models.CompanyNote
form_class = CompanyNoteForm
使用自定义 ModelForm:
class CompanyNoteForm(forms.ModelForm):
company = forms.ChoiceField(
widget=forms.widgets.Select(attrs={'readonly': 'readonly'}))
class Meta:
model = models.CompanyNote
如您所见,相关字段的小部件是只读的。这是因为我将公司作为 URL 的一部分,如company/1/note/add
. 我可以毫不费力地选择“1”并找到正确的公司对象,但我不知道如何设置只读字段。
我试过:
def get_initial(self):
initial = super(CompanyNoteCreateView, self).get_initial()
initial['company'] = self.get_company().id
return initial
但这没有用。Widget 是空的,这可能是问题所在。也许我在这里叫错了树。欢迎任何想法。