Обновление профиля Django
Привет, ребята, надеюсь, вы будете великими У меня сегодня вопрос о том, как обновить профиль в моем Django приложении.
проблема в том, что когда я заполняю места в форме и нажимаю кнопку сохранить изменения, содержимое не обновляет информацию в админке на профиль
Я буду признателен за ваш отзыв, спасибо
Вы можете увидеть его в https://github.com/edisonjao5/Django2App
Или вот код в приложении профилей
models.py
from django.contrib.auth.models import User
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from sorl.thumbnail import ImageField
class Profile(models.Model):
user = models.OneToOneField(
User,
on_delete=models.CASCADE,
related_name='profile'
)
SOCIAL = (
('twitter', 'Twitter'),
('facebook', 'Facebook'),
('instagram', 'Instagram'),
('youtube', 'Youtube'),
('github', 'Github'),
)
First_Name = models.CharField(max_length=30)
Last_Name = models.CharField(max_length=30)
Username = models.CharField(max_length=30)
image = ImageField(upload_to='profiles')
Password = models.CharField(max_length=30)
Social = models.CharField(max_length=30, choices=SOCIAL)
def __str__(self):
return self.user.username
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def update_user_profile(sender, instance, **kwargs):
instance.profile.save()
views.py
from django.views.generic import DetailView, View, FormView
from django.contrib.auth.mixins import LoginRequiredMixin
from .models import Profile
from .forms import UpdateProfileForm
class UpdateProfileView(LoginRequiredMixin, FormView):
http_method_names =['get', 'post']
template_name = 'profiles/update.html'
form_class = UpdateProfileForm
success_url = '/'
def dispatch(self, request, *args, **kwargs):
self.request = request
return super().dispatch(request, *args, **kwargs)
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context["user"] = self.request.user
return context
def form_valid(self, form):
new_object = Profile.objects.update_or_create(
FirstName = form.cleaned_data['First_Name'],
LastName = form.cleaned_data['Last_Name'],
Username = form.cleaned_data['Username'],
Image = form.cleaned_data['image'],
Password = form.cleaned_data['Password'],
)
if form.is_valid():
new_object.save()
return super().form_valid(form)
forms.py
from django import forms
class UpdateProfileForm(forms.Form):
FirstName = forms.CharField(max_length=30)
LastName = forms.CharField(max_length=30)
Username = forms.CharField(max_length=30)
Image = forms.ImageField()
Password = forms.CharField(widget=forms.PasswordInput, min_length=10)
update.html