我正在将Twitter克隆作为一个类项目。我有一个Profile模型,我想建立其中两个之间的关系。我做了以下工作,它工作正常:
class Profile(models.Model):
...
followers = models.ManyToManyField('self', symmetrical=False, related_name='following')
现在,我该如何避免与自身相关的个人资料(用户跟随自己)?
我尝试使用干净,但它不起作用。
def clean_followers(self):
self.followers.remove(self)
答案 0 :(得分:0)
我认为对你的项目最好的是保持原样,更进一步,我强制每个用户都在关注自己,因为当你显示主页的推文时,你会希望用户看到自己。如果你设法完成你想要的东西,你必须做2个分离查询(或者至少是一个丑陋的查询)来获取所有的推文。
您可以使用非常简单的模板标记清理“关注者列表”。
{% for follower_profile in current_profile.followers %}
{% ifnotequal current_profile follower_profile %}
<li>{{ user.username }}</li>
{% endifnotequal %}
{% endfor %}