Python 3.x 多对多字段接受所有用户,而不是选择的用户

Python 3.x 多对多字段接受所有用户,而不是选择的用户,python-3.x,django,django-models,Python 3.x,Django,Django Models,我试图阻止用户进行多次投票。所以我想将用户添加到问题对象的ManyToManyField。但是,当我转到管理时,所有用户都被添加到字段中,而不是被投票的用户。这是我的模型代码 class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') choice_number = model

我试图阻止用户进行多次投票。所以我想将用户添加到问题对象的ManyToManyField。但是,当我转到管理时,所有用户都被添加到字段中,而不是被投票的用户。这是我的模型代码

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    choice_number = models.IntegerField(default=2)
    category = models.CharField(max_length=50, default="comparison")
    users = models.ManyToManyField(User, blank=True)
    
    def subscribe(cls, current_user, new_vote):
        new_vote.users.add(current_user)
下面是在views.py中将用户添加到问题的功能:

def change_vote(request, instruction, pk):
    question = Question.objects.get(pk=pk)
    Question.subscribe(request.user, question)

使用
question.users.all()
获取与
问题相关的
用户

为什么不直接使用:
question.users.add(request.user)
?我无法理解什么错误可能是实际的问题不是在添加部分。当我只是在没有订阅功能的情况下创建模型时,它仍然会添加所有用户。我希望ManyToManyField一开始为空,但这需要所有用户:(您签入django shell了吗?没有,实际上我不知道怎么做:/
python manage.py shell
然后导入模型并检查其内容以进行验证