如何在MyListAssoc中创建关联? 我该如何删除它?
class Group(models.Model):
name = models.CharField(max_length=32, unique=True)
def __unicode__(self):
return '%s %s' % (self.name)
class MyKeywords(models.Model):
name = models.CharField(max_length=32, unique=True)
def __unicode__(self):
return self.name
class MyListAssoc(models.Model):
group = models.ForeignKey(Group)
keyword = models.ManyToManyField(MyKeywords)
mygroup = Group.objects.get(name="mygroup")
mykeyword = MyKeywords.objects.create(name="mykeyword")
答案 0 :(得分:3)
你只需要多对多关系,例如:
class Group(models.Model):
name = models.CharField(max_length=32, unique=True)
keywords = models.ManyToManyField(MyKeywords)
def __unicode__(self):
return '%s' % (self.name)
class MyKeywords(models.Model):
name = models.CharField(max_length=32, unique=True)
def __unicode__(self):
return self.name
然后,您可以使用您的m2m关系:
group = Group.objects.get(name='something')
keyw = MyKeywords.objects.get(name='something_else')
group.keywords.add(keyw)
group.keywords.all()
group.keywords.remove(keyw)
注意:建议班级名称为单数,因此应为MyKeyword
而不是MyKeywords
答案 1 :(得分:2)
mygroup = Group.objects.get(name="mygroup")
mykeyword = MyKeywords.objects.create(name="mykeyword")
mylistassoc = MyListAssoc(group=mygroup)
mylistassoc.save()
mylistassoc.keyword.add(mykeyword)
如果您想删除关联,只需使用remove(mykeyword)
代替add(mykeyword)
。
但是,您根本不需要中间模型来设置组和关键字之间的关系。