我有这样定义的模型:“RelatedManager”对象没有属性
class UserDetail(models.Model):
user = models.ForeignKey(User, db_index=True, unique=True, related_name='details')
favourites = models.ManyToManyField(Article, related_name='favourited_by', blank=True)
而且我试图做这样的事情:
article = get_object_or_404(Article, pk=id)
request.user.details.favourites.add(article)
为什么不工作?
我得到这个错误:
'RelatedManager' object has no attribute 'favourites'
我猜details
是不正确的类型,但为什么不呢?我该如何执行这样的查询?
哦!现在这变得更有意义了。我猜这很明显,*我*,用户只有一个'UserDetail',但我想这不是在任何地方指定的。谢谢。 – mpen 2009-12-01 04:22:05
如果您更改了模型,而不是使用ForeignKey,则使用了OneToOneField,您可以完全按照您的预期进行操作。 OneToOneFields与ForeignKeys类似,只不过由于它们只是一个相关对象,所以Django将直接访问该对象,而不是通过相关管理器。 请参阅https://docs.djangoproject.com/en/dev/ref/models/fields/#onetoonefield – mbargiel 2013-01-28 17:40:28