Django ForeignKey limit_choices_to多个子元素

时间:2015-10-22 08:14:40

标签: django foreign-keys parent-child models limit-choices-to

我有以下型号:

class Person(models.Model):
    # fields

class Teacher(Person):
    # fields

class Student(Person):
    # fields
    teacher = models.ForeignKey(teacher)

class Staff(Person):
    # fields

class SomeModel(models.Model):
    # fields
    point_person = models.ForeignKey(Person)

但我想限制我的“point_person”仅限于老师和学生。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我会提议实施custom manager,可能会覆盖get_queryset。 我可以看到2个解决方案只能获得拥有ChildA和/或ChildB的父母。

  • 如果一个父从不同时具有ChildA和ChildB(或任何其他组合),则可以向Parent添加一个额外字段(db列),这表示其子对象的类是什么,如果有的话。在自定义管理器的get_queryset中,您始终可以查看此字段。
  • 如果一个Parent可以同时拥有多个Child类,如果您不想添加额外的列,则覆盖get_queryset,实际从ChildA和ChildB中选择,{{3之后进入一个查询集。