尝试扩大contrib.auth.用户建模并添加“关系”管理

2024-10-01 07:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的模型。你知道吗

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对象并使用contribute\u to\u类向User对象添加“relationships”。我们的关系出现了,但如果你打电话用户关系朋友它应该运行friends()方法,但它失败了。你知道我该怎么做吗?你知道吗

谢谢


Tags: todjangofromimportmodelsclassrelatedbla
3条回答

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

可能您缺少调用中的“.objects”:

User.relationships.objects.friends()

我会这样做。你知道吗

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

这样就省去了和用户乱搞的麻烦。你知道吗

相关问题 更多 >