Попытка и расширение модели contrib.auth.user и добавление управления отношениями - PullRequest
0 голосов
/ 07 января 2011

У меня есть следующие настройки модели.

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 ]

1 голос
/ 07 января 2011

Я бы сделал это вместо этого.

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

Это избавляет от попыток возиться с пользователем.

0 голосов
/ 07 января 2011

Вы должны указать Django использовать ваш менеджер для связанных поисков - по умолчанию он использует стандартный для них.Вам нужно установить use_for_related_fields в диспетчере - см. документацию по этому .

0 голосов
/ 07 января 2011

Возможно, вам не хватает ".objects" в вызове:

User.relationships.objects.friends()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...