我想澄清在原始 SQL 中为使用多对多关系的 Django 模型提供初始数据的格式。我的查询基于此示例。我知道在这种情况下我不需要through
在 ManyToManyField 中指定参数,但我希望明确列出该表。
后端数据库是 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)
更新:第二种方法不正确。类下的members
字段Group
不是真正的 dB 列。