无法编辑 django 表



无法执行更新操作。

此函数用于表更新,但代码不允许我在表单中传递实例,因为它不是模型表单。请提出更改建议。

类用户表单(表单。形式(:

SHIFT_CHOICES = ( ('D','DAY'), ('N','NIGHT') )
ADMISSION_FORM_STATUS = ( ('Y','YES'), ('N','NO') )
FORM_COMPLETE_STATUS = (  ('Y','YES'), ('N','NO'))
TRAINING_STATUS = ( ('Y','YES'), ('N','NO') )
STATUS = (  ('W','WORKING'), ('OL','ON_LEAVE'),  ('E','EXIT') )
employee_id = forms.CharField(max_length=8,required=False)
employer_id = CompanyModelChoiceField(required=False, queryset=Company.objects.all(), label='Employer', widget=Select2Widget)
name = forms.CharField(max_length=255)
uber_name = forms.CharField(max_length=255, required=False)
mobile = forms.CharField(max_length=20, required=False)

若要将数据与表单字段(不是模型表单(绑定,您必须将包含这些特定字段的字典传递给表单构造函数。 在这种情况下,您需要做的是 获取字典中的表单数据

driver = Driver.objects.get(employee_id = employee_id)
form_data = {'employee_id':driver.employee_id, 'employer_id', driver.employer_id, .., .., .} #all the fields in the form
AddDriverForm(initial=form_data)

然后,在保存数据时,应按照与创建驱动程序相同的方式进行操作。

此外,我个人建议您在这种情况下使用模型形式,因为无论如何您都会将该数据放入模型中,这肯定会为您省去麻烦。 此外,如果没什么大不了的,您可以考虑规范化模型。

假设您的模型(DC(有一个实例(一个条目(:

超级英雄=布鲁斯,巴特勒=阿尔弗雷德,工程师=卢修斯,汽车=蝙蝠车

你的形态有超级英雄、管家、工程师

(请注意,我的表单缺少汽车字段(

现在,假设您要将名称巴特勒更改为贾维斯

instance = DC.objects.get(id=8) #lets consider this as the id of the instance we have 
#what you need to do is save the required data in a dictionary in this case
form_data = {'Superhero':instance.Superhero, 'Butler':instance.Butler, 'Engineer': instance.Engineer } #we haven't passed the car field
#Also I think that passing extra fields must not be an issue but I haven't tried
UpdateForm(form_data)

这将在显示表单时正确呈现数据。

最新更新