Избегай отношений с самим собой в Джанго - PullRequest
0 голосов
/ 11 апреля 2011

Я делаю клон Твиттера как проект класса. У меня есть модель профиля, и я хочу сделать отношения между двумя из них. Я сделал следующее, и все работает нормально:

class Profile(models.Model):
    ...
    followers = models.ManyToManyField('self', symmetrical=False, related_name='following')

Теперь, как я могу сделать так, чтобы профиль, связанный с самим собой (пользователь следил за собой)?

Я пытался использовать чистую, но она не работает.

    def clean_followers(self):
        self.followers.remove(self)

1 Ответ

0 голосов
/ 11 апреля 2011

Я думаю, что для вашего проекта лучше всего сохранить его таким, каким он есть, и даже дальше, я бы обеспечил, чтобы каждый пользователь следовал самому себе, потому что, когда вы показываете твиты главной страницы, вы хотите, чтобы пользователь увидеть свое. Если вам удастся выполнить то, что вы хотите, вам придется выполнить 2 отдельных запроса (или, по крайней мере, более уродливый), чтобы получить все твиты.

Вы можете очистить «список подписчиков» с помощью очень простой пометки шаблонов.

{% for follower_profile in current_profile.followers %}
    {% ifnotequal current_profile follower_profile %}
        <li>{{ user.username }}</li>
    {% endifnotequal %}
{% endfor %} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...