繁体   English   中英

Django多对多协会

[英]django many to many association

如何从这里在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")

您只需要多对多关系,例如:

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

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)

但是,您完全不需要中介模型来设置组和关键字之间的关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM