- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
去年我一直在学习使用 Django,而 Python 不是我的母语编程语言。通常,当我想创建多对多关系时,我会创建 3 个表,其中一个包含指向其他两个表中的每一个的两个外键。出于这个原因,我发现 Django manytomany 字段非常不自然。这个多对多字段是否会在数据库中创建第三个表来存储关系?如果是这种情况,则使用多对多字段将阻止类结构直接表示表结构。
我想知道的是,是否有理由我应该使用这个 manytomany 字段,或者我可以使用 3 个类来表示多对多关系吗?
谢谢
标记
最佳答案
I would create 3 tables, one of which contained two foreign keys to each of the other two tables. For this reason, I find the Django manytomany field very unnatural.
ManyToManyField
中看到的那样:
Behind the scenes, Django creates an intermediary join table to represent the many-to-many relationship. By default, this table name is generated using the name of the many-to-many field and the name of the table for the model that contains it. Since some databases don’t support table names above a certain length, these table names will be automatically truncated and a uniqueness hash will be used, e.g.
author_books_9cdf
. You can manually provide the name of the join table using thedb_table
option.
through=…
parameter [Django-doc] 中指定它。 .例如:
class Category(models.Model):
name = models.CharField(
max_length=128,
unique=True
)
class Item(models.Model):
name = models.CharField(
max_length=128,
unique=True
)
categories = models.ManyToManyField(
Category,
through='ItemCategory'
related_name='items'
)
class ItemCategory(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
validated = models.BooleanField(default=False)
一个
ManyToManyField
因此更像是一个使表示和查询更方便的概念。
关于python-3.x - Django 多对多真的有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64337887/
我正在使用 this solution在二进制矩阵中找到与图像边界对齐的矩形。假设现在我想找到一个不与图像边框对齐的矩形,并且我不知道它的方向;找到它的最快方法是什么? 为了示例,让我们寻找一个仅包含
else: 行在这个 Python 程序中是否正确/必要? from random import randrange for n in range(10): r = randrange(0,1
在 TDPL 7.1.5.1 中讨论了将 Widget w2 分配给 w1 并且作者指出“将 w2 逐个字段分配给 w1 会将 w2.array 分配给 w1.array——一个简单的数组边界分配,而
我是一名优秀的程序员,十分优秀!