【发布时间】:2013-10-21 15:10:29
【问题描述】:
我想澄清在原始 SQL 中为使用多对多关系的 Django 模型提供初始数据的格式。我的查询基于this example。我知道在这种情况下,我不需要在 ManyToManyField 中指定 through 参数,但我希望明确列出该表。
后端数据库是 MySQL,表名是小写的类名。
型号:
class Person(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
我想提供数据的正确方法是:
INSERT INTO person VALUES ('Ringo Starr')
INSERT INTO person VALUES ('Paul McCartney')
INSERT INTO group VALUES ('The Beatles')
INSERT INTO membership VALUES (1, 1)
INSERT INTO membership VALUES (2, 1)
如果我没有明确声明 Membership 表并且没有使用through 参数,我将如何指定这些数据?以下是正确的吗?
INSERT INTO person VALUES ('Ringo Starr')
INSERT INTO person VALUES ('Paul McCartney')
INSERT INTO group VALUES ('The Beatles', 1)INSERT INTO group VALUES ('The Beatles', 1)
更新:第二种方法不正确。 Group 类下的 members 字段不是真正的 dB 列。
【问题讨论】:
标签: mysql django django-models many-to-many