我有一个复杂的关系场景,如下所示。我想要JobChecklistAnswer.question
上与JobChecklistAnswer.job_checklist.checklist
相关的limit_choices_to
Questions
。
如何将这些Question
筛选为Q对象(或者文档中所说的可调用(?
class Checklist(models.Model):
name = models.CharField(_("name"), max_length=150)
description = models.CharField(_("description"), max_length=150)
class Question(models.Model):
checklist = models.ForeignKey(Checklist, on_delete=models.CASCADE)
question = models.CharField(_("question"), max_length=200)
class Job(models.Model):
...
...
class JobChecklist(models.Model):
job = models.ForeignKey(Job, on_delete=models.CASCADE)
checklist = models.ForeignKey(Checklist, on_delete=models.CASCADE)
class JobChecklistAnswer(models.Model):
job_checklist = models.ForeignKey(JobChecklist, on_delete=models.CASCADE)
# FIXME: Add limit_choices_to query question
question = models.OneToOneField(ChecklistItem, on_delete=models.CASCADE)
answer = models.TextField(_("answer"))
与OneToOneField";反向";关系,ForeignKey";反向";relation返回一个QuerySet。
您没有在OneToOneField中返回查询集,您只是在反转它们之间的关系
因此,第一步是将OneToOneField更改为ForeignKey
然后您可以在ForeignKey上使用limit_choices_to属性