【发布时间】:2011-07-28 21:48:19
【问题描述】:
我正在使用 DjangoBB 论坛系统,并尝试为其添加一些功能。
我们在这里使用了几种不同的模型。我将包括重要的部分。
用户(来自 django.contrib.auth.models){无重要代码可显示}
个人资料和帖子(来自 djangobb_forum.models):
class Profile(models.Model):
user = AutoOneToOneField(User, related_name='forum_profile', verbose_name=_('User'))
//AutoOneToOne is a slight, irrelevant modification of OneToOne, just pretend that its OneToOne for these purposes
...
allowed_to_post = models.IntegerField(max_length=2, default=0)
class Post(models.Model):
topic = models.ForeignKey(Topic, related_name='posts', verbose_name=_('Topic'))
user = models.ForeignKey(User, related_name='posts', verbose_name=_('User'))
我需要创建一个视图来显示所有帖子,其中与帖子关联的用户关联的个人资料的 allowed_to_post 值小于 5。我尝试了以下两种方法:
d_posts = Post.objects.filter(user__profile__allowed_to_post__lt = 5)
和
d_users = User.objects.filter(profile__allowed_to_post__lt = 5)
d_posts = Post.objects.filter(user__in=d_users)
两者都给出信息:
Cannot resolve keyword 'profile' into field. Choices are: _message_set, ban_users, date_joined, email, first_name, forum, forum_profile, groups, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, password, post, posts, posttracking, received_messages, registrationprofile, reported_by, reputations_from, reputations_to, sent_messages, subscriptions, topic, user_permissions, userassociation, username, zapped_by
我不明白为什么它不起作用,因为即使使用 OneToOne 字段,也应该存在反向关联。
如果您确实需要查看更多代码,请告诉我。
【问题讨论】:
-
related_name='forum_profile'不是要把相关名称从user__profile...改成user__forum_profile...吗?这不是相关名称的重点吗? -
你刚刚解决了。非常感谢。
标签: python django django-models django-views