Как уже упоминалось в комментариях, в вашей Question
модели нет поля с именем user
.Закрытое поле (users
) не определено должным образом.Похоже, что вы хотите поле ForeignKey
или, возможно, поле ManyToMany
в зависимости от того, как вы хотите структурировать эти отношения.Вы должны проверить документы об отношениях и о том, как они обрабатываются в ORM django.Кроме того, ваш статический метод update_users
, похоже, мало что делает.Похоже, вы хотите добавить всех пользователей к определенному вопросу, но вы передаете список значений, вызывая метод values_list
:
userz = User.objects.values_list('id','username')
Question.objects.all().update(users=userz)
, но метод обновления вашей модели может просто принятьСами объекты, не переходя к дальнейшему шагу создания values_list
.Я не уверен, почему вы это сделаете, но просто как пример того, какого рода аргументы ожидает метод обновления при работе со связанными объектами:
Question.objects.all().update(users=Users.objects.all())
Использование values_list было бы ошибкой, я считаю.Я настоятельно рекомендую проверить документы Django , чтобы освежить в памяти использование ORM.
В качестве отступления ... вам не нужно делать это:
def __str__(self):
return "{question_text}".format(question_text=self.question_text)
Как вы можете видеть в своем определении question_text
поля, это строковое поле (CharField
), поэтому вы можете просто сделать:
def __str__(self):
return self.question_text
Edit 1:
Djangoиспользует переменные класса для определения полей, но магия метапрограммирования, используемая для его работы, требует, чтобы вы использовали их предопределенные классы полей, чтобы он мог динамически заполнять поля из базы данных.Вы определили это поле с помощью статического списка:
users = User.objects.values_list('id','username')
Это определение не позволяет ему динамически извлекать данные из базы данных, но, что более важно, при создании таблицы, представленной определением вашей модели, ононеправильно определяет этот столбец.Каждое поле представляет столбец в вашей базе данных, и если вы не определите его, используя надлежащие классы полей, предоставленные в модуле django.models, оно не будет создавать поле.
Это все описано в документации для начинающих.