Как сохранить формы родителей, детей и внуков в одной форме отправки - django
я создаю приложение для компании мобильной торговли, сценарий таков: каждый счет имеет уникальный invoice number
и каждый уникальный date
имеет несколько phone models
и каждая модель телефона имеет ряд IMEI
вот как я создал модель базы данных
class Collection(models.Model):
admin = models.ForeignKey(User,on_delete=models.PROTECT)
company = models.ForeignKey(Company,on_delete=models.PROTECT)
invoice_no = models.IntegerField(unique=True)
collection_date = models.DateTimeField(default=timezone.now)
class MobileCollection(models.Model):
collection = models.ForeignKey(Collection,on_delete=models.PROTECT,related_name='collections')
mobile = models.ForeignKey(ModelCategory,on_delete=models.PROTECT,related_name='model_category')
qnt = models.IntegerField()
price = models.DecimalField(decimal_places=3,max_digits=20)
class Imei(models.Model):
mobile = models.ForeignKey(MobileCollection,on_delete=models.PROTECT)
imei = models.CharField(max_length=15,unique=True)
<<<Я не уверен, как построить представление, в то время как модель должна увеличиваться динамически, и с увеличением поля MobileCollection
в qnt
формы MobileCollection
должны увеличиваться, например, если Imei
мы должны добавить 10 qnt=10
форм, я думал о Imei
, но это не работает в моем случае. Пожалуйста, есть ли лучший подход для достижения этой цели? Спасибо заранееinlineformset_factory
Отправляйте несколько форм в контексте и работайте со всеми ними так же, как и с одной формой.
Пример:
class MyView(View):
template_name = 'my_template.html'
collection_form = CollectionForm
mcollection_form = MobileCollectionForm
# and so on..
def get(self, request, *args, **kwargs):
context = {
'collection_form': collection_form,
'mcollection_form': mobile_collection_form
}
return render(request, self.template_name, context=context)
def post(self, request, *args, **kwargs):
collection_form = self.collection_form(request.POST)
mcollection_form = self.mcollection_form(request.POST)
if collection_form.is_valid() and mcollection_form.is_valid():
collection_form.save()
mcollection_form.save()
return # your response, and so on..
return # your forms above in the post method if the forms are not valid