首页 > 解决方案 > 过滤外键项

问题描述

我有几个模型,我正在尝试根据已申请该职位的申请人过滤 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)

谢谢

标签: pythondjango

解决方案


# 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')

推荐阅读