python - 过滤外键项
问题描述
我有几个模型,我正在尝试根据已申请该职位的申请人过滤 PositionUpdate 表单中的候选人。
class Position(models.Model):
title = models.CharField(max_length=128,verbose_name='Title')
candidate = models.ForeignKey('careers.Applicant',
on_delete=models.SET_NULL,
related_name='candidate',
blank=True,
null=True
)
class Applicant(models.Model):
first_name = models.CharField(max_length=128,blank=False,verbose_name="First Name")
position = models.ManyToManyField(Position,related_name='applicants',
blank=True)
谢谢
解决方案
# In general, if you want filter foreign key items
Position.objects.filter(candidate__position='your value')
# For your form, you can queryset attribute of your model field
class PositionUpdateForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['candidate'].queryset = Position.objects.filter(candidate__position='your value')