Сохраняйте несколько наборов форм 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.

Надеюсь, это дало вам свет, чтобы сделать то, о чем вы просите.

Вернуться на верх