首页 > 解决方案 > 试图连接一个 ModelForm

问题描述

由于“ModelForm 未指定模型类”,我收到“值错误”。

我试图检查:models.py forms.py 和 views.py 但对我来说一切看起来都不错

视图.py:

class CreatePostView(LoginRequiredMixin,CreateView):
   login_url='/login/'
   redirect_field_name='Myblog/post_detail.html'
   form_class = PostForm
   model = Post

模型.py:

class Post(models.Model):
   author = models.ForeignKey('auth.User',on_delete=models.CASCADE)
   title = models.CharField(max_length=200)
   text = models.TextField()
   created_date = models.DateTimeField(default=timezone.now)
   published_date = models.DateTimeField(blank=True,null=True)

表格.py:

class PostForm(ModelForm):
   class meta:
       model = Post
       fields = ('author','title','text')

从 app.urls.py url(r'^post/new/$',views.CreatePostView.as_view(),name='post_new'),

标签: pythondjango

解决方案


Meta大写的,根据PEP-8,类的名称都以大写开头。在你的表格中,你应该写:

# app/forms.py

class PostForm(ModelForm):

    class Meta:
        model = Post
        fields = ('author','title','text')

既然你把它写成meta,Django 确实不明白model你在用什么。

但是,如果您不编写包含特定项目的表单,则可以 - 就像@DanielRoseman所说,只需在CreateView[Django-doc]中定义它:

class CreatePostView(LoginRequiredMixin,CreateView):
    login_url='/login/'
    redirect_field_name='Myblog/post_detail.html'
    model = Post
    fields = ('author', 'title', 'text')

modelform_factoryDjango 可以通过[Django-doc]构造一个表单类。


推荐阅读