Сохраняйте несколько наборов форм Django в одном поле базы данных
Актуальная ситуация. У меня есть таблица db под названием "invoice", в которую успешно сохраняются все Django formsets. Итак, таблица выглядит следующим образом:
item_id|quantity|description|price|taxes|total|customer_id|invoice_id|
56 1 apple 100 0 100 567 1766
12 1 banana 40 0 40 567 1766
Проблема Если, например, счет имеет 100 позиций, у меня будет 100 строк в таблице invoice db.
Вопрос. Я думаю, что есть лучший и более эффективный способ сделать то же самое без утяжеления базы данных. Итак, я хотел бы сохранить эти элементы, поступающие из наборов форм в одном поле как список кортежей элементов счета? Например, новая таблица будет выглядеть следующим образом:
| items |customer_id|invoice_id|
["fruit", [apple,banana], "price", [100,40]] 567 1766
Вы можете создать новую модель, которая наследуется от вашей модели Invoice:
Я просто пишу вам логику. Вам нужно обновить ее.
class Invoice(models.Model):
description = models.TextField() # Item description (ex. banana)
customer_id = models.(Your customer_id)
invoice_id = models.(Your invoice_id )
def __str__(self):
return self.description,self.customer_id,self.invoice_id
class InvoiceLite(models.Model):
items = models.OneToOneField(Invoice,on_delete=models.CASCADE)
Теперь вы можете увидеть базу данных для модели InvoiceLite.
Надеюсь, это дало вам свет, чтобы сделать то, о чем вы просите.