在Django中避免与自身的关系

时间:2011-04-10 23:55:58

标签: django

我正在将Twitter克隆作为一个类项目。我有一个Profile模型,我想建立其中两个之间的关系。我做了以下工作,它工作正常:

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

现在,我该如何避免与自身相关的个人资料(用户跟随自己)?

我尝试使用干净,但它不起作用。

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

1 个答案:

答案 0 :(得分:0)

我认为对你的项目最好的是保持原样,更进一步,我强制每个用户都在关注自己,因为当你显示主页的推文时,你会希望用户看到自己。如果你设法完成你想要的东西,你必须做2个分离查询(或者至少是一个丑陋的查询)来获取所有的推文。

您可以使用非常简单的模板标记清理“关注者列表”。

{% for follower_profile in current_profile.followers %}
    {% ifnotequal current_profile follower_profile %}
        <li>{{ user.username }}</li>
    {% endifnotequal %}
{% endfor %}