【问题标题】:Django - form.save() is not creating ModelFormDjango - form.save() 没有创建 ModelForm
【发布时间】:2020-07-24 03:48:32
【问题描述】:

在我的 Django 应用程序中,用户发送有关任务的反馈。我正在用ModelForm 创建这个form,在form.save() 之后,我的对象没有创建,也没有上传到数据库。这是我的代码:

views.py:

@login_required(login_url='sign_in')
def task_details(request, slug):
    if slug:
        task = get_object_or_404(Task, slug=slug)
        today = datetime.now().date()
        deadline = task.task_deadline.date()
        time_left = deadline - today
        form = CreateFeedbackForm()

    if request.method == 'POST':
        form = CreateFeedbackForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('index')
    else:
        form = CreateFeedbackForm()
    messages.info(request, 'Feedback sent.')

    context = {
        'task': task,
        'form': form,
        'days_left': time_left.days
    }
    return render(request, 'task-details.html', context)

models.py:

class TaskFeedback(models.Model):
    task = models.ForeignKey(Task, on_delete=models.CASCADE, null=True, blank=True)
    sender = CurrentUserField()
    is_solved = models.BooleanField(default=False)
    feedback_content = models.TextField(max_length=1000, null=True, blank=True)
    date_added = models.DateTimeField(auto_now_add = True)

    def __str__(self):
        return self.feedback_content

forms.py:

class CreateFeedbackForm(forms.ModelForm):
    class Meta:
        model = TaskFeedback
        fields = ['feedback_content', 'is_solved']

    def __init__(self, *args, **kwargs):
        super(CreateFeedbackForm, self).__init__(*args, **kwargs)

【问题讨论】:

  • 能否添加提交表单的html模板?
  • @Chris,非常感谢你,朋友,问题确实出在 html 模板中。
  • 您可以发布您的 html 并回答您自己的问题(您是如何解决问题的)作为其他用户的参考。

标签: python django django-models django-forms django-views


【解决方案1】:

问题出在我的html 页面中:

<form action="{% url 'task_details' task.slug %}" method="POST">
            {% csrf_token %}
            {{ form.feedback_content }}
            <div class="panel-buttons">
                <div class="checkbox">
                    {{ form.is_solved }}
                </div>
                <div class="save-btn-container">
                    <button class="btn btn--pill btn--green" type="submit">Send</button>
                </div>
            </div>
        </form>

【讨论】:

  • 您在表单中究竟做错了什么,您是如何解决的?
猜你喜欢
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 2016-04-06
  • 2017-06-16
相关资源
最近更新 更多