Django - 表单不保存修改

时间:2015-06-08 20:04:45

标签: python django forms

我正在创建一个页面,我的用户可以在其中编辑他们的文章,但是有一个问题,我的表单在提交表单时没有保存修改。我们来看看:

views.py

class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        exclude = ['date', 'rating', 'user']

form = ArticleForm()

第3至8行:是否检查您自己的文章是否存在问题。

第10到18行:这些行之间存在问题,我提交表单时表单未保存

forms.py (ModelForm)

class Article(models.Model):
    user = models.ForeignKey(User)
    titre = models.CharField(max_length=100, unique=True)
    summary = RichTextField(null=True, max_length=140)
    contenu = RichTextField(null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de parution")
    image = models.ImageField(upload_to='article', default='article/amazarashi.jpeg')
    rating = RatingField(can_change_vote=True)
    tags = TaggableManager(through=TaggedItem, blank=True)

    def __str__(self):
        return self.titre

(第4行:我在保存时排除日期,评分和用户名,以便用户无法更改这些信息。)

我的template.html中没有任何问题,urls.py不会因为我检查了10次而感到烦恼:)

任何帮助都会很棒,我已经在1个多月内阻止了这个问题...

*******编辑*******

Models.py

{% block body %}

{% if user.is_authenticated %}
      <p>Authentificated as <strong>{{ user.username }}</strong></p>
    {% else %}
      <p>NOT Authentificated</p>
    {% endif %}

<h1>Edit this {{ article.titre }}</h1>

<br>

<div class="col-xs-12 col-sm-8 col-md-8 col-lg-8">
<form enctype='multipart/form-data' action="{% url "article.views.index" %}" method="post" class="form"  autocomplete="off" autocorrect="off">
    {% csrf_token %}

    <div class="form-group">TITRE
      {{ form.titre.errors }}
      {{ form.titre }}
    </div>
    <div class="form-group">SUMMARY
      {{ form.media }}
      {{ form.summary.errors }}
      {{ form.summary }}
    </div>
    <div class="form-group">CONTENU
      {{ form.media }}
      {{ form.contenu.errors }}
      {{ form.contenu }}
    </div>
    <div class="form-group">
      {{ form.image.errors }}
      {{ form.image }}
   </div>
   <div class="form-group">TAGS
      {{ form.tags.errors }}
      {{ form.tags }}
   </div>

   <input type="submit" class="btn btn-default" value="Submit"/>
</div>

</form>

{% endblock %}

Template.html

{{1}}

1 个答案:

答案 0 :(得分:2)

根据您的错误消息..修改模板中的表单:

<form enctype='multipart/form-data' ...>

request.FILES添加到表单创建中:

if request.POST:
    form = ArticleForm(request.POST, request.FILES, instance=article)

更新: 您有奇怪的url标记参数。您确定已将您的网址定义为:('...', your_view, name='article.views.index')吗?我有疑问因为url标记将url name作为参数而不是视图路径,并且没有人通常使用这样的url名称。