/ jobseeker / addskills“列表”对象上的AttributeError没有属性“ jobseeker”

我试图利用Django中的模型表单集。但是,我的模型有一个外键,我想使用形式为request.user的外键来帮助我跟踪保存信息的人。我收到此错误。

@jobseeker_required
def add_skills(request):
    template_name = 'jobseeker/addskill.html'
    heading_message = 'Formset Demo'
    SkillFormSet = modelformset_factory(JobSeekerSkills,fields=('skill','level',))

    form = SkillFormSet()
    if request.method == 'POST':
        form = SkillFormSet(request.POST)
        a = form.save(commit=False)
        a.jobseeker = request.user.id
        a.save()

    return render(request,template_name,{'form': form})



class JobSeekerSkills(models.Model):


    LEVEL = (
        ('Beginner','Beginner' ),('Intermediary','Intermediary'),('Advance','Advance'),)


    jobseeker  = models.ForeignKey(User,on_delete=models.CASCADE)
    skill = models.CharField(max_length=255)
    level = models.CharField(max_length=25,blank=True,null=True,choices=LEVEL,default='Beginer') 
    updated_at = models.DateTimeField(auto_now=True)
    created_at = models.DateTimeField(auto_now_add=True)
yunmengyi 回答:/ jobseeker / addskills“列表”对象上的AttributeError没有属性“ jobseeker”

modelformset_factory返回一个表单集类型,因此SkillFormSet是一个表单集类型,而不是表单。实例化它将返回一个表单集实例。另外,formset.save返回表单实例的list,而不是单个表单-这是您收到错误的根源。

您需要遍历列表并添加属性:

formset = SkillFormSet(request.POST)
forms = formset.save(commit=False)

for form in forms:
    form.jobseeker = request.user.id
    form.save()
本文链接:https://www.f2er.com/3130483.html

大家都在问