我是 Django 的新手。我正在尝试填充我之前创建的供管理员使用的 Candidate 表。但是后来的需求发生了变化,我必须让用户填充它,所以我使用了表单。但是我收到此错误,我认为是因为在表 Candidate 中有表单数据未提供的自动 ID 字段。下面是代码。
models.py
从 django.db 导入模型 从 django.utils 导入时区
类候选人(models.Model):
SKILL_CHOICES = (
('Java','JAVA'),
('Python','PYTHON'),
('Full stack','FULL STACK'),
('Backend','BACKEND'),
)
GRADE_CHOICES = (
('Is1','IS1'),
('Is2','IS2'),
('IS3','IS3'),
)
SCREENING_CHOICES = (
('pending','PENDING'),
('wip','WIP'),
('complete','COMPLETE'),
)
SELECTION_CHOICES = (
('selected','SELECTED'),
('rejected','REJECTED')
)
Candidate_Name = models.CharField(max_length=70)
Skill_Category = models.CharField(max_length=20,choices = SKILL_CHOICES)
Account = models.CharField(max_length = 50)
Grade = models.CharField(max_length=10,choices = GRADE_CHOICES)
Role = models.CharField(max_length=20)
Billing_Date = models.DateField()
OnBoard_Date = models.DateField(default='2021-01-01')
Screening_Phase = models.CharField(max_length=20,choices = SCREENING_CHOICES)
Final_status = models.CharField(max_length = 10, choices = SCREENING_CHOICES,default = 'SELECTED')
def __str__(self):
return self.Candidate_Name
forms.py
从 django.forms 导入 ModelForm
从 .models 导入候选
class CandidateForm(ModelForm):
class Meta:
model = Candidate
fields = '__all__'
views.py
定义招聘人员(请求):
if request.method == 'POST':
form = CandidateForm(request.POST)
if form.is_valid():
name = form.cleaned_data["Candidate_Name"]
skill = form.cleaned_data["Skill_Category"]
account = form.cleaned_data["Account"]
grade = form.cleaned_data["Grade"]
role = form.cleaned_data["Role"]
billing_date = form.cleaned_data["Billing_Date"]
onboard_date = form.cleaned_data["OnBoard_Date"]
screening_phase = form.cleaned_data["Screening_Phase"]
final_status = form.cleaned_data["Final_status"]
candidate = Candidate(name,skill,account,grade,role,billing_date,onboard_date,screening_phase,final_status)
candidate.save()
else:
form = CandidateForm()
return render(request,'recur_app/recruiter.html',{'form': form})