Ошибка типа: для инициализации требуется 1 позиционный аргумент, но задано 2

python #python-3.x #django #forms #django-views

#python #python-3.x #django #формы #django-представления

Вопрос:

Привет, итак, я получаю эту ошибку, когда пытаюсь создать текстовую область на своем сайте для обновления информации пользователя «о». Он просто обрабатывает информацию существующего пользователя, чтобы обновить его поле «о программе». Любая дополнительная информация, необходимая, просто дайте мне знать, и любые идеи / решения будут оценены, заранее спасибо.

 class change_about(UpdateView):
 def get_object(self, queryset=None):

     return User.objects.get(user=self.request.user)

 def form_valid(self, form):

     instance = form.instance # This is the new object being saved
     instance.user = self.request.user
     instance.save()

     return super(change_about, self).form_valid(form)
 

AbstractUser:

 class User(AbstractUser):
    is_moderator = models.BooleanField(default = False)
    about = models.TextField(blank = True, null = True)
    notifications = models.ManyToManyField(Notification, related_name = 
    'notifications_user', blank = True)
 

Комментарии:

1. Не могли бы вы опубликовать всю ошибку целиком? Ошибка в названии не говорит нам, ЧТО вызывает ошибку типа.

Ответ №1:

Вам нужно использовать as_view() в конце представлений на основе классов при объявлении в URL-адресах:

 path('change_about/', views.change_about.as_view(), name='change_about')
 

Комментарии:

1. Это сработало для этой ошибки. Теперь это: не удается разрешить ключевое слово «user» в поле. Варианты: about, comment, date_joined, email, first_name, from_user, groups, id, is_active, is_moderator, is_staff, is_superuser, last_login, last_name, logentry, уведомления, пароль, stories_user, история, разрешения пользователя, имя пользователя

2. В этой строке: верните user.objects.get(user=self.request.user)

3. Это было бы так. User.objects.get(id=self.request.user.id )

4. Поскольку пользовательская модель не имеет поля «user».

5. У меня есть AbstractUser, расширяющий auth. Пользователь со своими собственными настраиваемыми полями тоже, есть ли хороший способ обновить поле «about», расширенное в AbstractUser?