gpt4 book ai didi

python - Python Django 中的模型不适用于多对多关系

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:31 24 4
gpt4 key购买 nike

我正在尝试创建适合以下要求的正确 Django 模型:

Person 类与 Address 类具有一对多关系

Person类与Group类有多对多的关系

Book 类包含 Person 和 Groups 的集合

这是我的代码:

class Person(models.Model):
first_name = models.CharField(max_length=15)
last_name = models.CharField(max_length=20)

def __str__(self):
return self.first_name+ ' - ' + self.last_name


class Address(models.Model):
person = models.ForeignKey(Person)
address_line = models.CharField(max_length=200)

def __str__(self):
return self.address_line


class Group(models.Model):
group_name = models.CharField(max_length=12)
persons = models.ManyToManyField(Person)

def __str__(self):
return self.group_name

class Book(models.Model):
record_name = models.CharField(max_length=12)
person = models.ForeignKey(Person )
group = models.ForeignKey(Group )

def __str__(self):
return self.record_name

但是这是不正确的:1) Group 现在可以包含多个 Person,但 Person 不包含任何 Group。我不确定是否应该向 Person 类添加以下代码:

groups = models.ManyToManyField(Group)

2) Book 类现在每个 Book 记录仅包含 1 条 Person 和 Group 记录。

3)当我将外键添加到模型中时,我删除了on_delete 标签:

person = models.ForeignKey(Person, on_delete=models.CASCADE())

因为它不编译它,所以需要一些参数。

我知道如何用 C# 实现这一切,但我对 Python/Django 中的这个简单任务有点困惑。

最佳答案

1) ManyToMany 字段应该只出现在其中一个模型中,并且从外观上看,您可能希望它出现在 Person 模型中。重要的是要了解有关 ManyToMany 字段的数据保存在不同的表中。 Django 只允许该字段通过 buth 模型可见(所以基本上,选择方便移动的位置)。

2)根据您的结构,我建议您通过不同的表使用ManyToMany字段。这是一个例子:

class Activity(models.Model):
name = models.CharField(max_length=140)
description = models.TextField(blank=True, null=True)

class Route(models.Model):
title = models.CharField(max_length=140)
description = models.TextField()
activities_meta = models.ManyToManyField(Activity, through = 'RouteOrdering')

class RouteOrdering(models.Model):
route = models.ForeignKey(Route, on_delete=models.CASCADE)
activity = models.ForeignKey(Activity, on_delete=models.CASCADE, related_name='activita')
day = models.IntegerField()
order = models.IntegerField(default=0)

这样数据就绑定(bind)到ManyToMany字段

关于python - Python Django 中的模型不适用于多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40073984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com