2011-07-28 56 views
0

我使用DjangoBB論壇系統,並試圖添加一些功能。Django反向一對一鍵

我們在這裏有幾種不同的模型。我將包括重要的部分。

用戶(從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')) 

我需要創建一個視圖,將顯示所有其中具有與所述帖子相關聯的用戶相關聯的簡檔中的帖子的,具有小於5的Ive嘗試了以下兩種方法allowed_to_post值:

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領域,應該有逆向關聯。

讓我知道如果你確實需要看到更多的代碼。

+3

'related_name ='forum_profile''是否會將相關名稱從'user__profile ...'更改爲'user__forum_profile ...'?這不是相關名稱的重點嗎? –

+0

你剛剛解決了它。非常感謝。 –

回答

5

related_name='forum_profile'改變從user__profile...user__forum_profile...

相關名稱這是一個外鍵或一到一個關鍵領域的相關名稱的屬性點。