#python-3.x #django #django-models
#python-3.x #django #django-модели
Вопрос:
Я пытаюсь запретить пользователям многократное голосование. Итак, я хочу добавить пользователей в 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)
Комментарии:
1. почему бы вам просто не использовать:
question.users.add(request.user)
? Я не могу понять, какая ошибка может быть2. На самом деле проблема не в части добавления. Когда я просто создаю модель без функции подписки, она все равно добавляет всех пользователей. Я хочу, чтобы ManyToManyField изначально было пустым, но для этого нужны все пользователи:(
3. Вы проверили в оболочке django?
4. Нет, и на самом деле я не знаю, как :/
5.
python manage.py shell
затем импортируйте модели и проверьте их содержимое для проверки
Ответ №1:
Используйте question.users.all()
, чтобы получить users
отношение к question