Привет ребята! Я делаю страницу обновления профиля на своем сайте Django. Ниже приведена проблема, которую я сталкиваюсь:
from django.shortcuts import render, redirect from django.contrib.auth.models import User, auth from django.contrib.auth.decorators import login_required from django.contrib import messages from django.contrib.auth.forms import UserCreationForm from .models import Profileforusers from .forms import UserUpdateForm, PicUpdateForm, BioUpdateForm # Create your views here. @login_required def userprofile(request): if request.method == 'POST': u_form = UserUpdateForm(request.POST, instance=request.user) p_form = PicUpdateForm(request.POST, request.FILES, instance=request.user.profileforusers) bio_form = BioUpdateForm(request.POST, instance=request.user.profileforusers) if u_form.is_valid(): u_form.save() messages.success(request, "Profile Is Updated Successfully!") return redirect("profilesettings") elif p_form.is_valid(): p_form.save() messages.success(request, "Profile Picture Is Updated Successfully!") return redirect("profilesettings") elif bio_form.is_valid(): bio_form.save() messages.success(request, "Bio Updated Successfully!") return redirect("profilesettings") else: u_form = UserUpdateForm(request.POST, instance=request.user) p_form = PicUpdateForm(request.POST, instance=request.user.profileforusers) bio_form = BioUpdateForm(request.POST, instance=request.user.profileforusers) context = { 'u_form': u_form, 'p_form': p_form, 'bio_form': bio_form } return render(request, 'siteaccount/usersettings.html', context)
Это мои сигналы.пи
from django.db.models.signals import post_save from django.contrib.auth.models import User from django.dispatch import receiver from .models import Profileforusers @receiver(post_save, sender=User) def create_profile(sender, instance, created, **kwargs): if created: Profileforusers.objects.create(user=instance) @receiver(post_save, sender=User) def save_profile(sender, instance, **kwargs): instance.profileforusers.save()
Это моя модель
from django.db import models from django.contrib.auth.models import User from PIL import Image # Create your models here. class Profileforusers(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) user_bio = models.CharField(max_length=150, default='Write About Yourself') user_image = models.ImageField(upload_to='thephotos/userphotos', default='defaultpicture.jpg') def __str__(self): return f"Profile Of {self.user.username}" def save(self, *args, **kwargs): super(Profileforusers, self).save(*args, **kwargs) usr_img = Image.open(self.user_image.path) if usr_img.height>300 or usr_img.width>300: output_img = (300, 300) usr_img.thumbnail(output_img) usr_img.save(self.user_image.path)
Это моя форма .py
from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm from .models import Profileforusers class UserUpdateForm(forms.ModelForm): email = forms.EmailField() class Meta: model = User fields = ['first_name'] widgets = { 'first_name' : forms.TextInput(attrs={'class': 'form-control'}) } class PicUpdateForm(forms.ModelForm): class Meta: model = Profileforusers fields = ['user_image'] class BioUpdateForm(forms.ModelForm): class Meta: model = Profileforusers fields = ['user_bio']
И это пользователи .html
Profile Update Page ![]()
Date Joined: {{user.date_joined|date:"F d, Y"}}
Username: {{user.username}}
Name: {{user.first_name}}
Bio: {{user.profileforusers.user_bio}}
{% for message in messages %}{{message}}
{% endfor %}
Ваш ответ будет очень признателен благодаря вашему времени
Оригинал: “https://dev.to/krishan111/i-need-help-in-this-problem-1a2c”