首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多值多所有者Django字段

多值多所有者Django字段
EN

Stack Overflow用户
提问于 2015-09-04 23:41:24
回答 1查看 319关注 0票数 0

我正在与一个非常联姻的关系的概念挣扎。我想要这样的东西:

代码语言:javascript
复制
class Category(models.Model):
    name = models.CharField(max_length=128, unique=True)
    descriptions = models.Listfield? #or something like this

class Descriptions(models.Model):
    name = models.CharField(max_length=128, unique=True)
    categories = models.Listfield? #or something like this

其想法是,类别将有描述,您可以单击它将给您一个类别列表与该描述,反之亦然。因此,如果分类像象,卡车,树和描述像重型,干线,我希望它设置为Elephant.descriptions =重型,躯干和Heavy.categories =大象,卡车

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-04 23:47:40

您可以使用ManyToManyField,因为它是一个多到多的关系(一个类别可以与多个描述相关联,一个描述可以与多个类别相关联

代码语言:javascript
复制
class Category(models.Model):
    name = models.CharField(max_length=128, unique=True)


class Description(models.Model):
    name = models.CharField(max_length=128, unique=True)
    categories = models.ManyToManyField(Category, blank=True)

使用此方法,您只需要在其中一个模型中添加ManyToManyField,无论是描述还是类别。

然后,您可以执行以下操作:

代码语言:javascript
复制
new_cat = Category(name = 'cat1')
new_cat.save()
new_desc = Description(name = 'desc1')
new_desc.save()
new_desc.categories.add(new_cat)

并且它们相互关联,不需要在ManyToManyField模型中使用Category

然后,可以使用以下方法访问与new_desc关联的所有类别:

代码语言:javascript
复制
new_desc.categories.all()

代码语言:javascript
复制
new_cat.description_set.all()

所有与new_cat相关的描述。

它将返回一个QuerySet,而不是一个列表

关于ManyToManyField的更多信息

many/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32408020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档