Django - 使用外键相互引用的两个类的模型结构建议

时间:2013-03-06 15:17:40

标签: django foreign-keys

我一直在尝试为我想要实现的目标提出解决方案。作为教我自己django的一部分,我正在努力为我的武术俱乐部创建一个俱乐部会员网站。作为其中一个应用程序的一部分,我提出了两类模型;会员和学校。

我们的想法是让会员通过ForeignKey参考他们所属的学校,并让学校参考会员以确定教师。教师只是一个普通会员,有一个BooleanField,用于识别他们是否是教练。

我只是在遇到问题之后不断遇到问题,我有点一个接一个地解决问题,但我想知道我首先做的是最有效的方法。

以下是目前成员模型的部分内容:

instructor = models.BooleanField('Instructor?', default=False)
school = models.ForeignKey('School')

这就是学校课程的样子:

class School(models.Model):
SCHOOL_CHOICES = (
    ('RED', 'Redruth - Centre of Excellence'),
    ('FAL', 'Falmouth - FXU'),
    ('MEV', 'Mevagissey'),
    )

name = models.CharField(max_length=3, choices=SCHOOL_CHOICES, default='RED')
instructors = models.ForeignKey('Student', related_name='instructors', blank=True, null=True)

我必须将related_name添加到教师ForeignKey中,因为没有它会引发错误。我也尝试在成员模型中向学校的ForeignKey添加一个to_field,目前它只是显示了三个“学校对象”副本,但这似乎没有改变它(编辑:用 unicode修复它定义)。

我这样做的方式(两个类用ForeignKeys互相引用)是做到这一点的最佳方法,还是我应该做些什么呢?

抱歉这么模糊:/

1 个答案:

答案 0 :(得分:1)

由于您在Member模型上标记了教师,因此您无需在School模型上使用其他关系来识别它们。相反,如果你想获得教师,你可以做一个特定的学校:

instructors = Members.objects.filter(instructor=True, school=my_school)