Не удается преобразовать ключевое слово 'user' в поле. Варианты: create_account, email, full_name

Я создал 2 модели.

  1. Account
  2. UserProfil

Во-первых, пользователь регистрирует email, полное имя, пароль1, пароль2. Данные отправляются в базу данных в таблицу Account.

Второй, пользователь войдет в систему, в случае успеха, он перейдет на приборную панель. в приборной панели есть форма профиля. В форме профиля пользователь вводит данные профиля, номер телефона, дату рождения и т.д. и сохраняет их в таблице UserProfil. Все данные в UserProfil связаны со счетом.

Я пытаюсь создать "Форму Профиля". Например, так.

Мой вопрос в том, как поместить данные Full_Name в эту форму? Я получил ошибку Error Cannot resolve keyword 'user' into field. Варианты: create_account, email, full_name ...

authentication/models.py

class Account(AbstractBaseUser, PermissionsMixin):
      email                   = models.EmailField(_('email address'), unique=True)
      full_name               = models.CharField(max_length=150)
      create_account          = models.DateTimeField(default=timezone.now)
      is_active               = models.BooleanField(default=False)
      is_staff                = models.BooleanField(default=False)
      is_reviewer             = models.BooleanField(default=False)
      is_admin                = models.BooleanField(default=False)

      objects = CustomAccountManager()

      USERNAME_FIELD = 'email'
      REQUIRED_FIELDS = ['full_name']

      def __str__(self):
          return self.full_name

dashboard/models.py

class UserProfil(models.Model):
    jenis_kelamin_choice = (
       ('Pria', 'Pria'),
       ('Wanita', 'Wanita' ),
    )

    user                    = models.OneToOneField(settings.AUTH_USER_MODEL, 
                              on_delete=models.CASCADE,)
    nik                     = models.CharField(max_length=11, null=True, unique=True)
    nidn                    = models.CharField(max_length=11, null=True, unique=True)

    def __str__(self):
    return str(self.user)

dashboard/views.py

class UserProfilFormView(CreateView):
    template_name       = 'dashboard/profil.html'
    form_class          = UserProfilForm

def form_valid(self, form):
    userPofil       = form.save(commit=False)
    userPofil.user  = Account.objects.get(user__full_name=self.request.user)
    userPofil.save()
    
    messages.success(self.request, 'Data Profil Berhasil Disimpan.')
    print(self.request.user)
    return super().form_valid(form)

File Traceback :

Спасибо

Ваш Account не имеет поля user, это также не имеет особого смысла, поскольку это учетная запись пользователя. В любом случае вам не нужно делать запрос к модели Account: request.user работает с моделью пользователя, здесь учетная запись, поэтому вы можете использовать request.user напрямую:

from django.contrib.auth.mixins import LoginRequiredMixin

class UserProfilFormView(LoginRequiredMixin, CreateView):
    template_name = 'dashboard/profil.html'
    form_class = UserProfilForm

    def form_valid(self, form):
        form.instance.user = request.user
        messages.success(self.request, 'Data Profil Berhasil Disimpan.')
        print(self.request.user)
        return super().form_valid(form)

Примечание: Вы можете ограничить представления на основе классов для аутентифицированных пользователей с помощью LoginRequiredMixin mixin [Django-doc].

Вернуться на верх