0

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

这个想法是让成员使用 ForeignKey 引用他们所属的学校,并让学校引用成员来识别教师。讲师只是一个普通的成员,带有一个布尔字段来识别他们是否是讲师。

我只是不断地遇到一个又一个的问题,我正在一个接一个地解决这个问题,但我想知道我一开始所做的是否是最有效的方法。

下面是 Members 模型的那部分目前的样子:

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 相互引用)是最好的方式,还是我应该做其他事情?

抱歉这么含糊:/

4

1 回答 1

1

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

instructors = Members.objects.filter(instructor=True, school=my_school)
于 2013-03-06T15:38:04.437 回答