Django reverse_lazy 到具有相关字段 ID 的 URL
Django reverse_lazy to a URL with a related field id
我创建了 2 个相关模型,Applicant 和 ApplicantStatus。创建 ApplicantStatus 后,我想 reverse_lazy 根据申请人状态创建查看条目的申请人详细信息页面。
class Applicant(models.Model):
first_name = models.CharField(max_length=50)
middle_name = models.CharField(max_length=50, null=True, blank=True)
last_name = models.CharField(max_length=50)
class ApplicantStatus(models.Model):
applicant = models.ForeignKey(Applicant, on_delete=models.PROTECT, related_name='applicant')
这里是申请人状态创建查看
class ApplicantStatusCreateView(LoginRequiredMixin, CreateView):
model = ApplicantStatus
form_class = ApplicantStatusCreateForm
template_name = 'recruitment/applicant_status_create.html'
def get_success_url(self):
return reverse_lazy('recruitment:applicant_detail', kwargs={'pk': self.object.pk})
我已经知道这将重定向到不存在的页面,因为该申请人尚不存在。这是我想从表格中获取申请人 ID 并在 kwargs 中使用它的地方,因此我将看到申请人详细信息页面以及申请人状态列表。
申请人详情如下:
@login_required()
def applicant_detail_view(request, pk):
applicant_detail = Applicant.objects.get(id=pk)
form = ApplicantStatusCreateForm
applicant_status_detail = ApplicantStatus.objects.filter(applicant__id=applicant_detail.id)
context = {
'applicant_detail': applicant_detail,
'form': form,
'applicant_status_detail': applicant_status_detail,
}
return render(request, 'recruitment/applicant_detail.html', context)
申请人状态创建表单也出现在详细视图中,因为我正在使用模式在详细视图中显示表单。
我发现答案比我想象的要简单。
在申请人状态创建视图中,我只是替换:
def get_success_url(self):
return reverse_lazy('recruitment:applicant_detail', kwargs={'pk': self.object.pk})
有了这个:
def get_success_url(self):
return reverse_lazy('recruitment:applicant_detail', kwargs={'pk': self.object.applicant.id})
希望对你也有帮助。
我创建了 2 个相关模型,Applicant 和 ApplicantStatus。创建 ApplicantStatus 后,我想 reverse_lazy 根据申请人状态创建查看条目的申请人详细信息页面。
class Applicant(models.Model):
first_name = models.CharField(max_length=50)
middle_name = models.CharField(max_length=50, null=True, blank=True)
last_name = models.CharField(max_length=50)
class ApplicantStatus(models.Model):
applicant = models.ForeignKey(Applicant, on_delete=models.PROTECT, related_name='applicant')
这里是申请人状态创建查看
class ApplicantStatusCreateView(LoginRequiredMixin, CreateView):
model = ApplicantStatus
form_class = ApplicantStatusCreateForm
template_name = 'recruitment/applicant_status_create.html'
def get_success_url(self):
return reverse_lazy('recruitment:applicant_detail', kwargs={'pk': self.object.pk})
我已经知道这将重定向到不存在的页面,因为该申请人尚不存在。这是我想从表格中获取申请人 ID 并在 kwargs 中使用它的地方,因此我将看到申请人详细信息页面以及申请人状态列表。
申请人详情如下:
@login_required()
def applicant_detail_view(request, pk):
applicant_detail = Applicant.objects.get(id=pk)
form = ApplicantStatusCreateForm
applicant_status_detail = ApplicantStatus.objects.filter(applicant__id=applicant_detail.id)
context = {
'applicant_detail': applicant_detail,
'form': form,
'applicant_status_detail': applicant_status_detail,
}
return render(request, 'recruitment/applicant_detail.html', context)
申请人状态创建表单也出现在详细视图中,因为我正在使用模式在详细视图中显示表单。
我发现答案比我想象的要简单。
在申请人状态创建视图中,我只是替换:
def get_success_url(self):
return reverse_lazy('recruitment:applicant_detail', kwargs={'pk': self.object.pk})
有了这个:
def get_success_url(self):
return reverse_lazy('recruitment:applicant_detail', kwargs={'pk': self.object.applicant.id})
希望对你也有帮助。