首页 > 解决方案 > /profile/ ModelForm 处的 ValueError 未指定模型类。错误django

问题描述

我在 django 中编码并试图弄清楚如何在我的应用程序中更新用户的个人资料请帮助我我正在尝试学习如何编码,这是我在这里学习 models.py 的一大障碍:

from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete= models.CASCADE)
    image = models.ImageField(default='default.jpg',upload_to="profile_pics")
    
    def __str__(self):
        return f'{self.user.username} Profile'

这是我的views.py:

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get("username")
            messages.success(request, f'Yor account has been created! You are now able to login')
            return redirect('/login')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html',{'form': form})
@login_required
def profile(request):
    u_form = UserUpdateForm(instance = request.user)
    p_form = ProfileUpdateForm(instance= request.user.profile)

    context = {
        'u_form': u_form,
        'p_form': p_form
    }

    return render(request, 'users/profile.html', context)

我在 'u_form':u_form 处遇到错误,

这是我的forms.py:

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import Profile
class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()
    class Meta:
        model = User
        fields = ['username', 'email','password1','password2']

class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username','email']

class ProfileUpdateForm(forms.ModelForm):
    model = Profile
    field = ['image']

我在这得到了我的错误 p_form = ProfileUpdateForm()

标签: djangodjango-forms

解决方案


ProfileUpdateForm您定义的模型类名称中没有Meta

模型名称和字段应在 Meta 类中定义,如下所示:

class ProfileUpdateForm(forms.ModelForm):

    class Meta:
        model = Profile
        fields = ['image']

推荐阅读