Обновление набора форм в Django
Я использую набор форм для сохранения данных в базе данных. Часть создания формы работает нормально, однако, обновление формы возвращает только экземпляр родительской модели, но экземпляр дочерней модели не возвращается. Любая помощь будет оценена по достоинству
Вот мои фрагменты кода:
Model.py
class Sale(models.Model):
billno = models.AutoField(primary_key=True)
supplier = models.ForeignKey(WorkerDetails, on_delete=models.SET_NULL, null=True)
created = models.DateTimeField(auto_now_add=True)
class SaleDetails(models.Model):
billno = models.ForeignKey(Sale, on_delete = models.CASCADE)
producttype = models.ForeignKey(Producttype, on_delete=models.SET_NULL, null=True)
quantity = models.DecimalField(default=0,decimal_places = 5, max_digits = 30)
perprice = models.DecimalField(default=1,decimal_places = 5,max_digits = 30)
totalprice = models.DecimalField(default=1,decimal_places = 5, max_digits = 30)
Forms.py
class SalesForm(forms.ModelForm):
.....
class Meta:
model = Sale
fields = '__all__'
class SalesDetailsForm(forms.ModelForm):
........
class Meta:
model = SaleDetails
fields = ['quantity', 'perprice','producttype','totalprice']
SalesFormset = formset_factory(SalesDetailsForm, extra=1)
views.py
class SalesUpdateView(View):
template_name = 'sales/sales-edit.html'
def get(self, request,pk):
try:
billno = Sale.objects.get(pk=pk)
except Sale.DoesNotExist:
raise Http404
#details = SaleDetails.objects.filter(billno=pk)
form = SalesForm(request.GET or None, instance=billno)
formset = SalesFormset(request.GET or None,)
context = {
'form' : form,
'formset' : formset,
}
return render(request, self.template_name, context)
def post(self, request):
form = SalesForm(request.POST)
formset = SalesFormset(request.POST)
if form.is_valid() and formset.is_valid():
billobj = form.save(commit=False)
for form in formset:
billitem = form.save(commit=False)
billitem.billno = billobj
billobj.save()
billitem.save()
messages.success(request, "Sold items have been registered successfully")
return redirect('list-sales')
form = SalesForm(request.GET or None, instance=billno)
formset = SalesFormset(request.GET or None,)
context = {
'form' : form,
'formset' : formset,
}
return render(request, self.template_name, context)