Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
django表单呈现不正常_Django_Templates_Render_Modelform - Fatal编程技术网

django表单呈现不正常

django表单呈现不正常,django,templates,render,modelform,Django,Templates,Render,Modelform,我正在学习如何使用ModelForms,并且我已经成功地获得了要渲染的表单,但是字段没有按照我希望的顺序显示。我尝试在forms.py中更改顺序,但没有效果。我怎样才能改变顺序;例如,将标题放在顶部而不是底部,并使图片字段倒数第二而不是第二 models.py from django.db import models from django.contrib.auth.models import User # Create your models here. class Post(models.

我正在学习如何使用ModelForms,并且我已经成功地获得了要渲染的表单,但是字段没有按照我希望的顺序显示。我尝试在forms.py中更改顺序,但没有效果。我怎样才能改变顺序;例如,将标题放在顶部而不是底部,并使图片字段倒数第二而不是第二

models.py

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
class Post(models.Model):

    title = models.CharField(max_length=150)
    price = models.CharField(max_length=100)
    body = models.TextField()
    pub_date = models.DateTimeField(null=True)
    author = models.ForeignKey(User, null=True)
    category = models.CharField(max_length=150, null=True)
    picture = models.ImageField(upload_to='ad_pictures', default='')

    def __str__(self):
        return self.title
forms.py

from django import forms
from .models import Post
from django.contrib.auth.models import User

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = {
            'title',
            'body',
            'category',
            'price',
            'picture',
        }
views.py

def create(request):
    form = PostForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
        return render(request, 'classifieds/latest-ads.html')
    else:
        form = PostForm()
        args = {'form': form}
        return render(request, 'classifieds/create-post.html', args)
create.html

{% extends 'base.html' %}

{% block head %}
<!-- {% load static %}
<link rel="stylesheet" href="{% static 'accounts/login.css' %}" type="text/css"> -->
<title>Create Post</title>
{% endblock %}

{% block body %}

<div class="container"><br>
  <form method="POST" action='' enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" value="submit">Submit</button>
  </form>
</div>
{% endblock %}
我想指出的是,在视频中,上传者能够操纵顺序,并在模板中更改渲染,但我不能

非常感谢您的任何见解

不需要字段顺序=['price','title','body','category','picture']

只需将{}替换为for字段

因此,你应该:

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = (
            'title',
            'body',
            'category',
            'price',
            'picture',
        )

你见过吗?我没见过,谢谢。我仍然不确定我到底把表单放在哪里了。order\u fields\u order.本来要在回答中给你看的,但是你发布了你的模型。py不是表单。py…:/在视频中,他可以更改顺序,因为他在表单的元中指定字段。Django也会使用这个命令,我已经更新了帖子,对此我深表歉意。