首页 > 解决方案 > 将动态表单中的数据存储在数组字段中(postgrsql)

问题描述

python/django 开发中的新手,我被一个问题阻止了。我有一个模型“订单”,他存储......订单

class Order(models.Model):
    datecom = models.DateTimeField(default=timezone.now, verbose_name="Date de commande")
    when = models.ForeignKey(OrdTime, on_delete=models.CASCADE, blank=True, null=True)
    stand = models.ForeignKey(Group, on_delete=models.CASCADE)
    user = models.CharField(max_length=100, blank=True, null=True)
    products = JSONField(default=defaultlist)
    status = models.BooleanField(default=False)
    dateliv = models.DateTimeField(verbose_name="Date de livraison", blank=True, null=True)
    slug = models.SlugField()

    class Meta:
        verbose_name = "- Commande"
        verbose_name_plural = "- Commandes"
        ordering = ['dateliv']

    def get_products(self):
        return format_html_join('', '{} : {} <br>', ([(product, score) for score, product in self.products]))

    def __str__(self):
        return self.slug

如您所见,'product' 是一个 ArrayField (Postgresql),它存储一个产品列表,每个产品都有一个数量。像这样:

def defaultlist():
    return [
        (15, "Product 1"),
        (1, "Product 2"),
        (2, "Product 3")
    ]

我正在创建一个可以将数据存储到订购产品的公共(但经过用户身份验证)表单。此表格必须存储订单日期、“展位”名称等,并且(这是我的问题)存储每个产品的产品名称和数量。只需要存储数量 > 0 的产品。这对我来说是一团糟。如何在模型表单中显示每行产品/数量的输入字段并将此输入格式化以存储在 arrayfield 中?

有什么想法吗?

标签: pythondjango

解决方案


推荐阅读