I want to clarify the format of providing initial data in raw SQL for a Django model that uses a many to many relationship. I've based my query on this example. I know I'm not required to specify the through
parameter in ManyToManyField for this case, but I would like to have the table listed explicitly.
Backend db is MySQL & table names are lowercase Class names.
Model :
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)
I suppose the correct way to provide data would be :
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)
How will I specify this data if I did not declare the Membership table explicitly and didn't use the through
parameter? Is the following correct?
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)
UPDATE : The second method isn't correct. The members
field under Group
class isn't a real dB column.