我想在我的表单集中应用具有 form-Case模型的情况,以及在具有 Offers-Offer模型内联的游艇的情况下应用内联-游艇型号。
models.py
class Case(models.Model):
client=models.ForeignKey(Client,null=True,verbose_name="Client",on_delete = models.CASCADE)
date_created = models.DateTimeField("Date of Case Creation",blank=True,default=datetime.datetime.now)
comment = models.CharField("Comments",max_length=500,null=True)
class Offer(models.Model):
date_created = models.DateTimeField("Date of Offer creation",default=datetime.datetime.now)
notes=models.CharField("Offer Notes",max_length=100,blank=True)
case=models.ForeignKey(Case,verbose_name="Case",on_delete = models.CASCADE)
class Yacht(models.Model):
name = models.CharField(max_length=50,verbose_name="Name")
price_per_day=models.DecimalField("Price(€) / Day",max_digits=8,decimal_places=2,default=0,blank=True)
passengers = models.IntegerField("Passengers",null=True)
class OfferHasYacht(models.Model):
offer=models.ForeignKey(Offer,verbose_name="Offer",on_delete = models.CASCADE)
yacht=models.ForeignKey(Yacht,verbose_name="Yacht",on_delete = models.CASCADE)
在forms.py中:
OfferOfferHasYachtFormSet=inlineformset_factory(Offer,OfferHasYacht,form=OfferHasYachtForm,extra=1)
具有要约形式和内联OfferHasYacht(不包括OfferHasYachtForm的要约)可以正常工作
class OfferHasYachtForm(ModelForm):
yacht = ModelChoiceField(required=True,queryset=Yacht.objects.all(),widget=autocomplete.ModelSelect2(url='yacht-autocomplete'))
class Meta:
model = OfferHasYacht
fields = ['yacht']
def __init__(self,*args,**kwargs):
super(OfferHasYachtForm,self).__init__(*args,**kwargs)
self.fields['yacht'].label = "Choose Yacht"
但是在尝试声明表单集时:
CaseOfferHasYachtFormSet=inlineformset_factory(Case,extra=1)
django抱怨:
ValueError: 'intranet.OfferHasYacht' has no ForeignKey to 'intranet.Case'.
如何解决该问题,以使我可以创建或更新包含要约的商品(作为内联)以及每个具有游艇的要约(作为内联)。