我试图在表单上设置字段的初始值。该字段不是模型的一部分,但当我尝试将其设置为值时,该字段为空。根据我的研究,这可能是因为表单是“绑定”的,这对我来说有一定意义,但在这种情况下,字段不是模型的一部分
我的表格:
#Form for editing profile
class CatForm(forms.ModelForm):
pictureid = forms.CharField()
class Meta:
model = Cat
fields = ['name']
def __init__(self, *args, **kwargs):
picid = kwargs.pop("pictureid")
print(picid)
super(CatForm, self).__init__(*args, **kwargs)
self.fields['pictureid'] = forms.CharField(initial=picid, required=False)
模型:
class Cat(models.Model):
name = models.CharField(max_length=34,null=False)
从视图上看,它被称为:
catform = CatForm(request.POST, pictureid=instance.id)
我希望它将字段设置为初始属性的值,但它没有。我试着直接添加一个字符串来测试它,但没有设置
这似乎对我起了作用:
class CatForm(forms.ModelForm):
class Meta:
model = Cat
fields = ['name']
def __init__(self, *args, **kwargs):
picid = kwargs.pop("pictureid")
super(CatForm, self).__init__(*args, **kwargs)
self.fields['pictureid'] = forms.CharField(initial=picid)
在启动表单时,我还需要从调用中删除“request.POST”
如果要在^{} 请求中呈现pictureid,则可以尝试如下操作:
对于GET请求,您不需要重写
__init__
方法但是,如果您想在POST请求中使用
Catform
,在其他地方(比如在save方法中)使用pictureid
的值,那么您需要在这里重写__init__
方法相关问题 更多 >
编程相关推荐