多对一关系
fromdjango.dbimport models class Author(models.Model): name = models.CharField(max_length=50) #Book has a foreignkey (many to one) relationship with author class Book(models.Model): author = models.ForeignKey(Author, on_delete=models.CASCADE) publish_date = models.DateField()
最通用的选项。可以在您想要代表任何关系的任何地方使用
多对多关系
class Topping(models.Model): name = models.CharField(max_length=50) # One pizza can have many toppings and same topping can be on many pizzas class Pizza(models.Model): name = models.CharField(max_length=50) toppings = models.ManyToManyField(Topping)
在内部,这是通过另一个表表示的。并ManyToManyField应放在将在表单上进行编辑的模型上。例如:Appointment将具有ManyToManyField被叫Customer,Pizza具有Toppings等等。
使用直通类的多对多关系
class Service(models.Model): name = models.CharField(max_length=35) class Client(models.Model): name = models.CharField(max_length=35) age = models.IntegerField() services = models.ManyToManyField(Service, through='Subscription') class Subscription(models.Model): client = models.ForeignKey(Client) service = models.ForeignKey(Service) subscription_type = models.CharField(max_length=1, choices=SUBSCRIPTION_TYPES) created_at = models.DateTimeField(default=timezone.now)
这样,我们实际上可以保留有关两个实体之间关系的更多元数据。可以看出,客户端可以通过几种订阅类型订阅几种服务。在这种情况下的唯一区别是,要向M2M关系中添加新实例,不能使用捷径方法,而应创建直通类的新对象,pizza.toppings.add(topping)Subscription.objects.create(client=client, service=service, subscription_type='p')
在其他语言through tables中,也称为JoinColumn,Intersection table或mapping table
一对一关系
class Employee(models.Model): name = models.CharField(max_length=50) age = models.IntegerField() spouse = models.OneToOneField(Spouse)class Spouse(models.Model): name = models.CharField(max_length=50)
当两个模型之间只有合成关系时,请使用这些字段。
我使用下面的代码创建了20篇帖子,每个帖子都有3条评论。 相反,我想创建20个帖子,每个帖子都有随机数量的评论(例如,帖子1有2个评论,帖子2有4个评论,等等)。) 这不起作用,每个帖子都有相同(随机)数量的评论。 我怎样才能做到这一点?
我正试图阻止我的关系重新开始。我尝试了多种方法来解决这个问题,但似乎每次都有一个错误。例如,当我尝试以下代码时: 我得到以下错误: 我已经检查了数据库中的所有表和索引,但在任何地方都找不到此约束。我该如何移除它。我基本上希望我的模式是这样的: 今年将有一份所有学生、老师的名单。当学生注册时,他们将被添加到该学年中 如果我不添加连接列,我只是得到另一个表说 Year.students 我如何将这些结
问题内容: 假设我有两个表:Store和Product。我希望我的商店有产品清单。我怎样才能做到这一点? 我开始这样的事情,但是我不知道该如何完成,你们能帮我吗? 问题答案: 多对一(产品只能有一家商店) 多对多(产品可以在许多商店中使用)
我试图将实体“blog”与关系一对一地添加到新的jhipster的项目中,但没有结果,jhipster生成器没有将实体“blog”添加到我的项目中 没有错误消息,什么都没有。我尝试通过JDL添加相同的实体-相同的结果。 null
我尝试用Spring Boot Jpa自动创建表,但它不起作用,它不执行任何sql查询。我怀疑这是由于一个人或多个人的关系。我查了一下网站,但没能找到一个有类似问题的问题。Spring不执行任何查询和创建任何表。 用户可以创建很多帖子,每个帖子都有很多评论等等。 post.java 注释.java topic.java 我错在哪里?谢谢你!
“email”节点以前是从另一个“people.csv”文件创建的,并且“email”节点存在唯一性约束。在上面的行中,我希望通过关系将“created_by”、“delivered_to”和“delivered_by”节点与之前创建的“email”节点合并。当我运行代码时,它给出了错误,并且没有从CSV中创建any节点。如何组织密码查询以防止此错误?谢了。