【问题标题】:ValueError at /profile/ ModelForm has no model class specified. Error django/profile/ ModelForm 处的 ValueError 未指定模型类。错误django
【发布时间】:2021-05-14 13:50:54
【问题描述】:

我在 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'

这是我的观点.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()

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

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

    模型名称和字段应该像这样在 Meta 类中定义:

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

    【讨论】:

    • 谢谢它有效,必须包含` exclude = ['fields'] `
    猜你喜欢
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多