我试图使用户能够添加作业,在填写表单后,我得到了该错误。这是我的代码:

models.py
from django.db import models
from django.contrib.auth.models import User
class Job(models.Model):
title = models.CharField(max_length=255)
short_description = models.TextField()
long_description = models.TextField(blank=True, null=True)
created_by = models.ForeignKey(User, related_name='jobs', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
changed_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title views.py
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .forms import AddJobForm
from .models import Job
def job_detail(request, job_id):
job = Job.objects.get(pk=job_id)
return render(request, 'jobs/job_detail.html', {'job': job})
@login_required
def add_job(request):
if request.method == 'POST':
form = AddJobForm(request.POST)
if form.is_valid():
job = form.save(commit=True)
job.created_by = request.user
job.save()
return redirect('dashboard')
else:
form = AddJobForm()
return render(request, 'jobs/add_job.html', {'form': form})forms.py
from django import forms
from .models import Job
class AddJobForm(forms.ModelForm):
class Meta:
model = Job
fields = ['title','short_description','long_description']要解决这个错误,我需要做些什么?我尝试从commit=True中删除views.py,并尝试删除sqlite3并再次进行迁移。
发布于 2021-03-31 01:56:46
您正在尝试保存对象而不为created_by设置值(因此出现了错误消息),然后为该字段分配一个值,然后再次保存。你应该换衣服
job = form.save(commit=True)至
job = form.save(commit=False)这样,第一个.save实际上就不会尝试向数据库提交任何东西。它只用于构造Job实例,这样您就可以完成任何缺失的值,并使用job.save()实际保存它。
请注意,如果省略commit=参数,则假定为True。
https://stackoverflow.com/questions/66880600
复制相似问题