Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django下表_Python_Django_Django Models - Fatal编程技术网

Python Django下表

Python Django下表,python,django,django-models,Python,Django,Django Models,我如何修改代码,使登录的用户无法跟随自己。我试着和你在一起,但没能成功 我将使用其他用户配置文件页面上的按钮将用户添加到此表中的登录用户列表中 class FollowList(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True) following = models.ManyToManyField(User, related_name='follo

我如何修改代码,使登录的用户无法跟随自己。我试着和你在一起,但没能成功

我将使用其他用户配置文件页面上的按钮将用户添加到此表中的登录用户列表中

class FollowList(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    following = models.ManyToManyField(User, related_name='followers')

我建议你使用类似中间模型的东西。实际上,许多模型都有两个外键字段:第一个用于
FollowList
模型,第二个用于链接
用户
实例。所以你和你的模特有一个额外的关系。更好的方法:

class Follow(models.Model):
    follower = models.ForeignKey(User, on_delete=models.CASCADE, related_name='my_following_users')
    following = models.ForeignKey(User, on_delete=models.CASCADE, related_name='my_followers')

    class Meta:
        unique_together = (
            ('follower', 'following'),
        )

    def save(self, *args, **kwargs):
        if self.follower.pk != self.following.pk:  # preventing of following themselves
            return super().save(*args, **kwargs)

# use like this
dev YourView():
    Follow.objects.create(follower=request.user, following=user)
UPD: 如果需要使用一次请求设置多个关注者,请执行以下操作:

dev YourView():
    items = []
    for uid in ("<user ids here>"):
        items.append(Follow(follower=request.user, following__pk=uid))
    Follow.objects.bulk_create(items)
dev YourView():
项目=[]
对于“”中的uid:
items.append(Follow(follower=request.user,follower\u pk=uid))
Follow.objects.bulk\u创建(项目)

谢谢,我稍后再试。因此,我将从按钮调用yourview函数?我将如何修改它,以便为follow对象选择多个follow用户
yourview
只是一个示例,如何使用
follow
模型。你应该在你需要的任何地方创建一个
Follow
实例。我在我的帖子中举了一个小例子来说明你的问题。这是你的情况吗?嗨,我的意思是,假设用户访问一个用户页面并跟踪他们,然后创建跟踪对象。然后用户访问另一个用户页面并跟踪他们。如何将其添加到用户已经拥有的follow对象中。