gpt4 book ai didi

python - 多对多字段 - 访问属性

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:42 24 4
gpt4 key购买 nike

我有这两个模型通过 ManyToManyField 关联:

class Bar(models.Model):
name = models.CharField(max_length=25, blank=False)

class Foo(models.Model):

bar = models.ManyToManyField(Bar, blank=True, related_name='bb')

def __unicode__(self):
return '%s' % self.bar.name

在管理页面中我收到此错误:

Exception Type: AttributeError
Exception Value: 'ManyRelatedManager' object has no attribute 'name'

如何访问 Foobar 的名称?我发现点符号无效。

最佳答案

简短回答:你不能。

长答案:您的问题“我如何访问 Foo 中的 bar 名称”意味着给定的 Foo 实例始终有一个并且只有一个相关 Bar(不是零,不是二,不是四十二,只是一),但您使用的是 ManyToManyField 这意味着给定的 Foo 实例可以有零个、一个或任意(正数)个相关的Bar。在本例中,Foo.bar 解析为查询集,而不是单个 Bar 实例,IOW

f = Foo() 
f.bar.all()

相当于

f = Foo() 
Bar.objects.filter(bb=f) # very weird related name FWIW

实际上,在这种情况下,将 Foo.bar 命名为 Foo.bars(复数)会更好。

如果您的意图是建立一对多关系,其中每个 Foo 都有一个 Bar,而一个 Bar 有多个 Foo,您需要一个ForeignKey

关于python - 多对多字段 - 访问属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38102031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com