Не удается преобразовать ключевое слово 'user' в поле. Варианты: create_account, email, full_name
Я создал 2 модели.
- Account
- 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].