Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ModelForm未能保存_Python_Django - Fatal编程技术网

Python Django ModelForm未能保存

Python Django ModelForm未能保存,python,django,Python,Django,我有一个Django模型,如下所示: def postproperty(request): context = RequestContext(request) if request.method == 'POST': form = PostForm(request.POST, request.FILES) if form.is_valid(): form.save(commit=True) retur

我有一个Django模型,如下所示:

def postproperty(request):
    context = RequestContext(request)
    if request.method == 'POST':
        form = PostForm(request.POST, request.FILES)
        if form.is_valid():
            form.save(commit=True)
            return HttpResponseRedirect(reverse('postthanks'))
        else:
            print form.errors

    else:
        form = PostForm()

    content = {'form': form}
    return render_to_response('postproperty.html', content, context)
models.py

class Property(models.Model):
    id = models.AutoField(unique=True, primary_key=True)
    name = models.CharField(max_length=500)
    desc = models.CharField(max_length=2000)
    address_line1 = models.CharField(max_length=200)
    address_line2 = models.CharField(max_length=200)
    locality = models.CharField(max_length=200, default=0)
    city = models.CharField(max_length=200)
    state = models.CharField(max_length=200)
    pin = models.BigIntegerField(max_length=200)
    phone = models.BigIntegerField(max_length=20)
    secondary_number = models.BigIntegerField(max_length=20, blank=True)
    image = models.ImageField(upload_to='dynamic/img')
    square_feet = models.BigIntegerField(max_length=200, default=0)
    price = models.BigIntegerField(max_length=200, default=0)
    NO = 'NO'
    YES = 'YES'
    APPROVAL = ((NO, 'no'), (YES, 'yes'))
    active = models.CharField(choices=APPROVAL, default=NO, max_length=3)

    def __unicode__(self):
        return self.name
此模型的模型形式:

class PostForm(forms.ModelForm):
    name = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter name for Property'}), required=True)
    desc = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control input-area', 'placeholder': 'Enter a small description', 'rows': '5', 'style': 'resize:none;'}), required=True)
    address_line1 = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter first line of address'}), required=True)
    address_line2 = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter second line of address'}), required=True)
    locality = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter locality'}), required=True)
    city = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter city name'}), required=True)
    state = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter state name'}), required=True)
    pin = forms.IntegerField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter pincode'}), required=True)
    phone = forms.IntegerField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter contact number'}), required=True)
    secondary_number = forms.IntegerField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter secondary contact number'}), required=False)
    image = forms.FileInput()
    square_feet = forms.IntegerField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter area of property in square feet'}), required=True)
    price = forms.IntegerField(widget=forms.TextInput(attrs={'class': 'form-control input-area', 'placeholder': 'Enter price of property in Rupees'}), required=True)
    NO = 'NO'
    YES = 'YES'
    APPROVAL = ((NO, 'no'), (YES, 'yes'))
    active = forms.CharField(widget=forms.HiddenInput(), initial=NO)

    class Meta:
        model = Property
我的views.py如下所示:

def postproperty(request):
    context = RequestContext(request)
    if request.method == 'POST':
        form = PostForm(request.POST, request.FILES)
        if form.is_valid():
            form.save(commit=True)
            return HttpResponseRedirect(reverse('postthanks'))
        else:
            print form.errors

    else:
        form = PostForm()

    content = {'form': form}
    return render_to_response('postproperty.html', content, context)
该模板包含以下内容:

<form id="property_form" method="POST" action="">
    {% csrf_token %}
    {% if form.errors %}
        <p style="color: red;">
            Please correct the error{{ form.errors|pluralize }} below.
        </p>
    {% endif %}
    {% for hidden in form.hidden_fields %}
        {{ hidden }}
    {% endfor %}
    {% for field in form.visible_fields %}
        {{ field.help_text}}
        {{ field }}
    {% endfor %}
    <input type="submit" name="submit" value="Add Property" class="btn btn-info test-button" style="margin-top:20px;"/>
</form>

{%csrf_令牌%}
{%if form.errors%}

请更正下面的错误{form.errors | pluralize}}。

{%endif%} {%用于隐藏在表单中。隐藏的_字段%} {{隐藏}} {%endfor%} {%form.visible_fields%} {{field.help_text} {{field}} {%endfor%}
表单在模板中正确呈现。当我从模板中保存表单时,它会告诉我
,请更正下面的错误
。没有指定错误,我不知道哪个字段似乎给了我错误。
谢谢你的帮助

编辑:
正如Daniel所说,我在模板中添加了
{{field.errors}
{{form.non_field_errors}}
。它在图像字段中显示错误。为什么会这样

嗯,模板中没有显示任何错误。除了每个字段和标签之外,您还应该在表单的to处添加
{{field.errors}
,再加上
{{form.non_field_errors}}

需要将其添加到模板中:


这样做,会给图像字段带来一个错误,它说图像字段是必需的