Python 不保存数据django Foreignkey模型
我有两个模型。我想保存ForeignKey模型中的数据。我创建了一个模型表单,并使用我的主foreignkey模型保存。但是我在/c/customer/1上得到了这个错误值error/ 无法分配“1”:BillingData.customer必须是CustomerData实例 我创建了Django模型表单,并与视图进行了关联 models.py文件 类CustomerDatamodels。模型: 客户名称=型号。CharFieldmax\u长度=100 customer\u no=models.CharFieldmax\u length=100,默认值=,blank=True 移动电话号码=models.IntegerField 备选电话=型号。IntegerFieldFull=True,blank=True union\u name=models.ForeignKeyUnionName,on\u delete=models.SET\u NULL,NULL=True word\u name=models.ForeignKeyUnionWordName,on\u delete=models.SET\u NULL,NULL=True 完整地址=models.CharFieldmax长度=200,null=True,blank=True 创建\日期=模型。DateTimeFieldDauto\现在\添加=真 更新=模型。DateTimeFieldDauto_now=真 定义自身: 返回“%s,手机:%s”%self.customer\u name,self.Mobile\u number def get_absolute_urlself: 返回反向'customer_data',kwargs={'pk':self.pk} 类BillingDatamodels。模型: bill_no=models.CharFieldmax_length=100,默认值=,blank=True customer=models.ForeignKeyCustomerData,on_delete=models.CASCADE sales\u person=models.ForeignKeysettings.AUTH\u USER\u MODEL,on\u delete=models.SET\u NULL,NULL=True customer\u money=models.IntegerField 创建\日期=模型。DateTimeFieldDauto\现在\添加=真 更新=模型。DateTimeFieldDauto_now=真 定义自身: 返回“%s%s”%self.customer.customer\u name,self.create\u date.date def get_absolute_urlself: 返回反向'customers.views.BillingPage',kwargs={'pk':self.pk} forms.py文件 类BillCreateFormsforms.ModelForm: 工程量清单编号=表格。Charfield最大长度=100 customer=forms.ChoiceFieldchoices=[x.id,x.customer\u CustomerData.objects.all中x的名称] customer\u money=forms.IntegerField def saveself,commit=True: instance=superBillCreateForms,self.savecommit=False customer\u pk=self.cleanned\u数据['customer'] instance.customer=CustomerData.objects.getpk=customer\u pk instance.savecommit 返回实例 类元: 模型=计费数据 字段=‘账单号’、‘客户’、‘客户钱’, views.py文件Python 不保存数据django Foreignkey模型,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我有两个模型。我想保存ForeignKey模型中的数据。我创建了一个模型表单,并使用我的主foreignkey模型保存。但是我在/c/customer/1上得到了这个错误值error/ 无法分配“1”:BillingData.customer必须是CustomerData实例 我创建了Django模型表单,并与视图进行了关联 models.py文件 类CustomerDatamodels。模型: 客户名称=型号。CharFieldmax\u长度=100 customer\u no=models.
class CustomerDataView(FormMixin, generic.DetailView):
model = CustomerData
form_class = BillCreateForms
template_name = "customers/customerdata_detail.html"
print(form_class)
success_url = '/c/'
def post(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return HttpResponseForbidden()
form = self.get_form()
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
我希望使用foreignkey关系数据保存数据。但不保存在此处。更改此行
instance.customer = CustomerData.objects.get(pk=customer_pk)
到
您无法在save方法中修复此问题,因为错误发生在它到达之前 您应该使用ModelChoiceField,而不是ChoiceField。这不仅可以解决问题,还可以删除整个save方法
customer = forms.ModelChoiceField(queryset=CustomerData.objects.all())
创建的相同问题“``无法分配“1”:BillingData.customer必须是CustomerData实例。``@AsaduzzamanSohel:该错误意味着您需要将customer对象从数据库中取出,然后使用该对象而不是对象的id。您需要弄清楚customer\u pk b/c中的内容看起来可能不仅仅是客户id。一旦知道pk的位置,就可以使用它来获取要分配给instance.Customer的CustomerData对象。您发布的代码不应该给出该错误。显示完全回溯。这是完全回溯
customer = forms.ModelChoiceField(queryset=CustomerData.objects.all())