1

我尝试将应用程序从较旧的 1.11 Django 重写为最新的 2.2。但是当我点击保存按钮时。空无一物。没有错误,没有保存的表格,什么也没有发生。

模型.py

class BlogPost(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, related_name="itemauthor", on_delete=models.SET_NULL)
    image = models.ImageField(_('Featured image'), upload_to='item_pictures/%Y/%m/%d/', default=False)
    timestamp = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=255, null=False, unique=True)
    slug = models.SlugField(max_length=80, null=True, blank=True)
    content = MarkdownxField()
    status = models.SmallIntegerField(choices=BLOG_STATUS)
    ... some more fields

表格.py

class CreateForm(forms.ModelForm):
    edited = forms.BooleanField(widget=forms.HiddenInput(), required=False, initial=False)
    content = MarkdownxFormField()
        class Meta:
            model = BlogPost
            fields = ["title", "content", "image", "edited"]

视图.py

class CreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
    permission_required = 'is_active'
    model = BlogPost        
    form_class = CreateForm
    template_name = 'blog/create.html'

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super().form_valid(form)

    def get_success_url(self):
        return reverse('blog:home')

创建.html

{% extends 'base.html' %}
{% load static i18n %}
{% load crispy_forms_tags %}

{% block head %}
{% endblock head %}

{% block content %}

  <nav aria-label="breadcrumb">
  </nav>
  <form action="{% url 'blog:write_new' %}" enctype="multipart/form-data"  id="item-form" method="post" role="form">
    {% csrf_token %}
    {{ form|crispy }}
    <div class="form-group">
      <button type="button" class="btn btn-primary publish">{% trans 'Publish' %}</button>
    </div>
  </form>
  {{ form.media }}

{% endblock content %}

{% block modal %}
  <script src="{% static 'js/blog.js' %}"></script>
{% endblock modal %}

博客.js

$(function () {

    $(".update").click(function () {
        $("input[name='status']").val("1");
        $("input[name='edited']").val("True");
        $("#article-form").submit();
    });

        $(".publish").click(function () {
        $("input[name='status']").val("1");
        $("#article-form").submit();
    });

});

我忘记了什么?那天我一直在寻找这个错误,但不幸的是我找不到它。

4

2 回答 2

0

首先,最好不要使用与其基类相同的类名。
class OtherClassName(LoginRequiredMixin, PermissionRequiredMixin, CreateView):

第二,你没有打电话save()

def form_valid(self, form):
    form.instance.user = self.request.user
    form.save()
    return super(OtherClassName, self).form_valid(form)
于 2019-08-06T19:06:50.940 回答
0

从改变

<form action="{% url 'blog:write_new' %}" enctype="multipart/form-data"  id="item-form" method="post" role="form">

id="article-form"

是的,班级也发生了变化:

class BlogClassName(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
permission_required = 'is_active'
model = BlogPost        
form_class = CreateForm
template_name = 'blog/create.html'

def form_valid(self, form):
    form.instance.user = self.request.user
    return super().form_valid(form)

def get_success_url(self):
    return reverse('blog:home')

最后将您的网址更改为新课程

主要问题在于 .html 表单 ID

于 2019-08-08T15:48:44.993 回答