首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试并扩展contrib.auth.user模型并添加"relationships“管理

尝试并扩展contrib.auth.user模型并添加"relationships“管理
EN

Stack Overflow用户
提问于 2011-01-07 06:48:30
回答 3查看 142关注 0票数 0

我有以下模型设置。

代码语言:javascript
复制
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_to_class将“关系”添加到User对象。关系显示出来了,但是如果调用User.relationships.friends,它应该运行friends()方法,但它失败了。你知道我该怎么做吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-07 07:00:07

我会这样做。

代码语言:javascript
复制
f= Relationships.objects.filter( from_user=some_user, is_friend=True )

这样就省去了和用户打交道的麻烦。

票数 1
EN

Stack Overflow用户

发布于 2011-01-07 06:51:35

也许你在调用中遗漏了".objects“:

代码语言:javascript
复制
User.relationships.objects.friends()
票数 0
EN

Stack Overflow用户

发布于 2011-01-07 17:25:07

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4620830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档