form.py 中分配实例的外键字段问题
ForeignKey field problem with assign instance in form.py
这里我想保存我页面上 form.py 的数据(在管理面板上一切正常)。
我的 model.py 是,
class contrat(models.Model):
contrtID = models.CharField(max_length=25,unique=True)
def __str__(self):
return self.contrtID
和另一个 table;
class Invoices(models.Model):
Invoce_Titl = models.CharField(max_length=50)
Cntrat_Nbr = models.ForeignKey(contrat, on_delete=models.CASCADE) #should be Actived
def __str__(self):
return self.Invoce_Titl
我使用的表格是:
query_contrat = (('', '-------'),)
class Invoices_F(forms.ModelForm):
Invoce_Titl = forms.CharField(label='Invoice Title',max_length=50)
Cntrat_Nbr = forms.ChoiceField(label='Contract ID',choices=query_contrat)
class Meta:
model= Invoices
fields=('Invoce_Titl','Cntrat_Nbr')
def __init__(self, *args, **kwargs):
super(Invoices_F, self).__init__(*args, **kwargs)
self.fields['Cntrat_Nbr'].choices = query_contrat + tuple( contrat.objects.filter(Actived='Active').values_list('id','contrtID'))
因此,当我在 HTML 页面中尝试时,当我按保存数据时出现此错误。
无法分配“'5'”:“Invoices.Cntrat_Nbr”必须是“合同”实例。
所以我的 from 将 contrat.id 作为带有另一个 ' ' 的字符串,那么我该如何解决这个问题?
Django 有一个表单字段:a ModelChoiceField
[Django-doc]:
class Invoices_F(forms.ModelForm):
Invoce_Titl = forms.CharField(label='Invoice Title',max_length=50)
Cntrat_Nbr = forms.<strong>ModelChoiceField(</strong>
<strong>required=False</strong>,
label='Contract ID',
queryset=contrat.objects.filter(Actived='Active')
<strong>)</strong>
class Meta:
model= Invoices
fields=('Invoce_Titl','Cntrat_Nbr')
这将使 contrat
模型对象的选择更加优雅并且样板代码更少。
这里我想保存我页面上 form.py 的数据(在管理面板上一切正常)。
我的 model.py 是,
class contrat(models.Model):
contrtID = models.CharField(max_length=25,unique=True)
def __str__(self):
return self.contrtID
和另一个 table;
class Invoices(models.Model):
Invoce_Titl = models.CharField(max_length=50)
Cntrat_Nbr = models.ForeignKey(contrat, on_delete=models.CASCADE) #should be Actived
def __str__(self):
return self.Invoce_Titl
我使用的表格是:
query_contrat = (('', '-------'),)
class Invoices_F(forms.ModelForm):
Invoce_Titl = forms.CharField(label='Invoice Title',max_length=50)
Cntrat_Nbr = forms.ChoiceField(label='Contract ID',choices=query_contrat)
class Meta:
model= Invoices
fields=('Invoce_Titl','Cntrat_Nbr')
def __init__(self, *args, **kwargs):
super(Invoices_F, self).__init__(*args, **kwargs)
self.fields['Cntrat_Nbr'].choices = query_contrat + tuple( contrat.objects.filter(Actived='Active').values_list('id','contrtID'))
因此,当我在 HTML 页面中尝试时,当我按保存数据时出现此错误。
无法分配“'5'”:“Invoices.Cntrat_Nbr”必须是“合同”实例。
所以我的 from 将 contrat.id 作为带有另一个 ' ' 的字符串,那么我该如何解决这个问题?
Django 有一个表单字段:a ModelChoiceField
[Django-doc]:
class Invoices_F(forms.ModelForm):
Invoce_Titl = forms.CharField(label='Invoice Title',max_length=50)
Cntrat_Nbr = forms.<strong>ModelChoiceField(</strong>
<strong>required=False</strong>,
label='Contract ID',
queryset=contrat.objects.filter(Actived='Active')
<strong>)</strong>
class Meta:
model= Invoices
fields=('Invoce_Titl','Cntrat_Nbr')
这将使 contrat
模型对象的选择更加优雅并且样板代码更少。