Джанго обратный ключ один-к-одному - PullRequest
0 голосов
/ 29 июля 2011

Я использую систему форумов 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'))

Мне нужно создать представление, в котором будут отображаться все посты, где профиль, связанный с пользователем, связанным с постом, имеет значение allow_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 должны быть обратные ассоциации.

Дайте мне знать, если вам нужно увидеть больше кода.

1 Ответ

5 голосов
/ 29 июля 2011

related_name='forum_profile' меняет связанное имя с user__profile... на user__forum_profile...

Это точка связанного атрибута имени поля внешнего ключа или однозначного ключа.

...