Я пытаюсь создать профиль пользователя для своих пользователей с Django. В целом, похоже, в основном работал, и я могу видеть все правильно на странице администратора. На моей фактической странице HTML я правильно вижу поля модели, которые мне нужны, однако они не заполнены никакими данными, и данные, которые я вставляю, фактически не будут экономить, даже если говорят, что это так.Почему в представлении Django отображаются правильные поля модели без данных?
views.py
class DemoUserEditView(UpdateView):
form_class = DemoUserEditForm
template_name = "user/profile.html"
view_name = 'account_profile'
success_url = '/member/'
def get_object(self):
return self.request.user
def form_valid(self, form):
form.save()
messages.add_message(self.request, messages.INFO, 'User profile updated')
return super(DemoUserEditView, self).form_valid(form)
account_profile = login_required(DemoUserEditView.as_view())
models.py.
class UserProfile(models.Model):
user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE)
avatar_url = models.CharField(max_length=256, blank=True, null=True)
skills = models.CharField(max_length=256, blank=True, null=True)
avatarpic = models.ImageField(_('avatar photo'),
blank=True, null=True,
upload_to=user_directory_path, validators=[validate_img_extension])
Bio = models.TextField(_('Bio'),
max_length=200, blank=True, null=True, unique=False)
EDUCATION_CHOICES = (
('0', "Didn't complete High School"),
('1', 'High School or GED'),
('2', 'Associate Degree'),
('3', 'Batchlors Degree'),
('4', 'Masters Degree'),
('5', 'PhD Degree'),
('6', 'Professional Degree'),
)
Education = models.CharField(_('Education'),
max_length=100, blank=True, null=False,
choices=EDUCATION_CHOICES, unique=False,
help_text="Level of Education")
urls.py
url(r'^accounts/', include('allauth.urls')),
url(r'^accounts/profile/$', 'base.views.account_profile', name='account_profile'),
Я пытаюсь использовать общие взгляды, и я думал, что UpdateView будет соответствующий тег для этого. Я прочитал Generic View docs, а также несколько вопросов о стекопотоке и this one. Моя большая проблема заключается в том, что я больше не получаю сообщений об ошибках, и он говорит, что форма действительна и сохраняется, но это не так, и я не уверен, что еще попробовать.
Итак, как я могу заполнить форму модели существующими пользовательскими данными?
Команда self.request.user возвращает правильную строку пользователя. Я все еще думаю, что это комедия, где ошибка, хотя, я просто не уверен, что еще нужно вернуть. – RknRobin
ok, попробуйте сделать так, чтобы def get_object (self, queryset = None): –
Хорошо, теперь мы куда-то попадаем. Добавление запроса = ничего не было ... ничего! Это показано [здесь] (https://ccbv.co.uk/projects/Django/1.4/django.views.generic.edit/UpdateView/), но это связано с тем, что queryset = None является значением по умолчанию и необходимо задать запрос внутри get_object. Я добавил queryset = UserProfile.objects.all(), но он не исправил интерфейс. – RknRobin