【问题标题】:Updating django form without prompting the user to enter their ID更新 django 表单而不提示用户输入他们的 ID
【发布时间】:2021-06-26 23:44:11
【问题描述】:

所以我正在开发工作申请门户。

逻辑如下:

应聘者 ---> 应聘 ---> 工作

模型是(工作、用户、应用程序) 我使用了 django 的 User 模型并对其进行了扩展。 现在的困境是当我渲染 ApplicationForm 时,因为我必须更新外键并且我希望它自动更新。

这是我的代码:

模型.py

class Job(models.Model):
    owner = models.ForeignKey(User,related_name='job_owner',on_delete=models.CASCADE)
    title = models.CharField(max_length=100)

    #location
    job_type = models.CharField(max_length=15,choices=JOB_TYPE)
    description= models.TextField(max_length=1000)
    published_at = models.DateTimeField(auto_now=True)
    vacancy = models.IntegerField(default=1)
    salary = models.IntegerField(default=0)
    experience = models.IntegerField(default=1)
    category = models.ForeignKey('Category',on_delete=models.CASCADE)
    icon = models.ImageField(upload_to ='job_icons/',default='job_icons/job.png')
    slug = models.SlugField(blank = True,null=True)





class Application(models.Model):
    job = models.ForeignKey(Job, related_name="job_applied",on_delete=models.CASCADE)
    applicant = models.ForeignKey(User,related_name='job_applicant',on_delete=models.CASCADE)
    first_name= models.CharField(max_length=40)
    last_name= models.CharField(max_length=40)
    email = models.EmailField(max_length=60)
    website = models.URLField()
    cv = models.FileField(upload_to='application/')
    coverletter = models.TextField(max_length=550)
    application_date = models.DateTimeField(auto_now=True)
    def __str__(self):
        return self.last_name+"\t"+self.first_name

Forms.py

class JobApplication(ModelForm):
    class Meta:
        model = Application
        fields = ['first_name', 'last_name','email', 'website','cv','coverletter']

vews.py

def job_detail(request,slug):
    job_specific = Job.objects.get(slug=slug)
    form = JobApplication(instance=request.user)


    if request.method == 'POST':
        form = JobApplication(request.POST,request.FILES)
        if form.is_valid():
            my_form = form.save(commit=False)
            my_form.job = job_specific

            Application.applicant.user = request.user

            Application.job = job_specific

            my_form.save()



        
    context ={'job_specific':job_specific, 'form':form,}
    return render(request,"job/job_details.html",context)

所以一旦用户提交了他们的申请,我想在不提示用户的情况下更新“外键”字段。

我不知道如何在 views.py 中安排这个,或者是否可以这样安排?

提前感谢大家

【问题讨论】:

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


    【解决方案1】:

    所以我解决了这个问题,这是非常简单的解决方案:

    my_form = form.save(commit=False)
    my_form.job = job_specific
    my_form.applicant = request.user
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 2019-12-22
      • 2015-01-28
      • 1970-01-01
      相关资源
      最近更新 更多