【问题标题】:(HELP) Django Model Form does not recognize Image file(帮助) Django 模型表单无法识别图像文件
【发布时间】:2017-10-09 00:27:50
【问题描述】:

我使用我的一个模型(即(帖子))为我的博客网站创建了一个表单。该表格是供作者发表文章的。在该表单中有一个 Image 属性,作者可以在其中上传图像。但是,当我尝试上传图像并发布它时,我收到一条反馈说“必填字段”,我认为表单无法识别正在尝试上传到数据库的图像。请帮忙:

这是来自views.py的表单视图:

def formview(request):
    form = PostForm(request.POST or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
    return render(request, 'form.html', {'form':form})

这是来自 forms.py:

from django import forms
from .models import Post

class PostForm(forms.ModelForm):
    image = forms.FileField
    class Meta:
        model = Post
        fields = ['category', 'title', 'body', 'image', 'author']

这来自我的 models.py:

class Post(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length=100)
pub_date = models.DateTimeField(auto_now_add=True)
body = models.TextField()
image = models.FileField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
likes = models.IntegerField(default=1)

def __str__(self):
    return self.title

这是我的 forms.html 模板:

<form method="POST" action="">
{% csrf_token %}

{{ form.as_p }}

<button type="submit">Post</button>

这是我的 urls.py:

from django.conf.urls import url
from . import views

app_name = 'posts'

urlpatterns = [
    url(r'^$', views.homeview, name='homeview'),
    url(r'^(?P<pk>[0-9]+)$', views.postview, name='postview'),
    url(r'^category/(?P<pk>[a-zA-Z0-9]+)/$', views.categoryview, 
name='categoryview'),
    url(r'^author/(?P<pk>[a-zA-Z0-9]+)/$', views.authorview, name='authorview'),
    url(r'^add_post/$', views.formview, name='formview'),

]

这些图片可能有助于解释我想说什么:

Filling the form and selecting the picture

Error message after trying to post

谢谢

【问题讨论】:

    标签: python django forms


    【解决方案1】:
    def formview(request):
        if request.method == 'POST':
            form = PostForm(request.POST,request.FILES)
            if form.is_valid():
                instance = form.save(commit=False)
                instance.save()
        else:
            form = PostForm()
        return render(request, 'form.html', {'form':form})
    

    这个form = PostForm(request.POST,request.FILES),你需要在PostForm中添加文件

    【讨论】:

    • 非常感谢!..它起作用了......那么“无”呢??..因为现在我在填写表格之前就看到了“必填字段”。但最初“无”处理,除非用户未能填写该属性。请帮我解决这个问题。谢谢
    • 我的答案改了,再看一遍
    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 2017-09-11
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多