尝试并扩展contrib.auth.user模型并添加“关系”管理

时间:2011-01-06 22:48:30

标签: python django model authentication

我有以下模型设置。

from django.db import models
from django.contrib.auth.models import User

class SomeManager(models.Manager):
    def friends(self):
        # return friends bla bla bla


class Relationship(models.Model):
    """(Relationship description)"""
    from_user = models.ForeignKey(User, related_name='from_user')
    to_user = models.ForeignKey(User, related_name='to_user')
    has_requested_friendship = models.BooleanField(default=True)
    is_friend = models.BooleanField(default=False)

    objects = SomeManager()

relationships = models.ManyToManyField(User, through=Relationship, symmetrical=False)
relationships.contribute_to_class(User, 'relationships')

这里我使用User对象并使用contrib_to_class将“关系”添加到User对象。关系显示,但如果调用User.relationships.friends它应该运行friends()方法,但它失败了。我有什么想法会这样做吗?

由于

3 个答案:

答案 0 :(得分:1)

我会这样做。

f= Relationships.objects.filter( from_user=some_user, is_friend=True )

这样可以避免试图弄乱用户。

答案 1 :(得分:0)

也许你错过了电话中的“.objects”:

User.relationships.objects.friends()

答案 2 :(得分:0)

你需要告诉Django使用你的经理进行相关的查找 - 默认情况下,它使用标准的查找。您需要在管理器上设置use_for_related_fields - 请参阅the documentation on this