繁体   English   中英

如何在Django中保存具有相同模型但具有不同数据的数据

[英]How to save the data that has same model but with different data in Django

我正在使用Django 1.8的小型项目中工作。 目的是构建一个小型计费应用程序。 因此,我创建了两个模型,即Bill和Product,如下所示。

#bill/models.py

class Bill(models.Model):
  date_of_issue = models.DateField()
  name = models.CharField(max_length=50, default="N/A", null=True)
  address = models.CharField(max_length=150, default="N/A", null=True)
  created = models.DateTimeField(auto_now_add=True)
  modified = models.DateTimeField(auto_now=True)

def __str__(self):
    return "{} {}".format(self.input_name, self.date_of_issue)

class Product(models.Model):
  bill = models.ForeignKey(Bill, on_delete=models.CASCADE)
  description = models.CharField(max_length=100, default="N/A")
  quantity = models.IntegerField(default=0)
  total = models.IntegerField(default=0)

通过查看模型,您可以知道我的方法是创建Bill和Product表,并通过ForeignKey将Product连接到Bill。 现在,问题是一张帐单将至少包含一种产品。 如果产品不止一种,我应该如何在views.py中编写我的观点。 我是Django开发的新手。 如果法案包含单个产品,那么我可以写出它的观点。 但是,如何存储具有不同数据的多个产品并将其存储在数据库中。

例如

用户将输入客户的姓名和地址。 然后,用户将输入产品的详细信息。 现在,我想多次生成Product模型表单(取决于用户添加的产品数量)。 我怎样才能做到这一点?

假设

1)可以一次购买多种产品(因此成为一张账单的一部分),并且

2)可以随时购买多种产品(因此可以成为许多票据的一部分)

一个简单的外键是错误的建模尝试。 代替m:1关系,您需要一个m:n关系-因此需要ManyToManyField 使用ManyToManyField,您可以将多个产品添加到一个帐单中,也可以将多个产品添加到多个帐单中。 在django-admin中,将ManyToManyFields设置为filter_horizontal很有用(我建议这样做),这可以简化该字段的使用。

另外,django会自动使用附加的第三个数据库表来解决您的m:n关系,因此您无需进行任何处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM