Django - form.save() 没有创建 ModelForm [英] Django - form.save() is not creating ModelForm
本文介绍了Django - form.save() 没有创建 ModelForm的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的 Django 应用程序中,用户发送有关任务的反馈.我正在用 ModelForm
创建这个 form
,在 form.save()
之后,我的对象没有创建,也没有上传到数据库.这是我的代码:
views.py
:
@login_required(login_url='sign_in')def task_details(请求,slug):如果弹头:task = get_object_or_404(Task, slug=slug)今天 = datetime.now().date()截止日期 = task.task_deadline.date()time_left = 截止日期 - 今天表单 = CreateFeedbackForm()如果 request.method == 'POST':表单 = CreateFeedbackForm(request.POST)如果 form.is_valid():表单.save()返回重定向('索引')别的:表单 = CreateFeedbackForm()messages.info(请求,'反馈已发送.')上下文 = {'任务':任务,'形式':形式,'days_left': time_left.days}返回渲染(请求,'task-details.html',上下文)
models.py
:
class TaskFeedback(models.Model):任务=models.ForeignKey(任务,on_delete=models.CASCADE,空=真,空白=真)发件人 = CurrentUserField()is_solved = models.BooleanField(默认=假)反馈内容 = 模型.TextField(max_length=1000, null=True, blank=True)date_ added = models.DateTimeField(auto_now_add = True)def __str__(self):返回 self.feedback_content
forms.py
:
class CreateFeedbackForm(forms.ModelForm):元类:模型 = 任务反馈字段 = ['feedback_content', 'is_solved']def __init__(self, *args, **kwargs):super(CreateFeedbackForm, self).__init__(*args, **kwargs)
解决方案
问题出在我的 html
页面中的表单操作中:
<div class="save-btn-container"><button class="btn btn--pill btn--green" type="submit">发送</button>
</表单>
In my Django application users send feedback about task. I'm creating this form
with ModelForm
, and after form.save()
my object is not creating and is not uploading to database. Here are my codes:
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)
解决方案
The problem was in action of form in my html
page:
<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>
这篇关于Django - form.save() 没有创建 ModelForm的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!