Python 关于Django中ForeignKey模型关系的困惑
我使用的是MySQL,我有两个模型:Python 关于Django中ForeignKey模型关系的困惑,python,django,Python,Django,我使用的是MySQL,我有两个模型: class District(models.Model): name = models.CharField(max_length=50) def __unicode__(self): return self.name class School(models.Model): name = models.CharField(max_length=100) school_id = models.IntegerFi
class District(models.Model):
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name
class School(models.Model):
name = models.CharField(max_length=100)
school_id = models.IntegerField(default=0)
district = models.ForeignKey(District)
当我尝试查询我的学校模型时:
schools = School.objects.filter(district = 'Norfolk')
它告诉我需要使用int()-这让我相信它想要的是地区的主键id,而不是地区的名称。在我的管理员中,学校的学区是字符串“Norfolk”,但在Sequel Pro中,它列出学区id,并引用学区id
我的模型设置错了吗?为什么我不能将学区名称传递给学校模型?如果要按名称筛选,应该使用
schools = School.objects.filter(district__name = 'Norfolk')
您应该注意到,可能有多个具有该名称的District,因为它不是模型
District
的键(即它不是唯一的)。请查看。您应该使用ForeignKey.to\字段
。默认情况下,使用相关模型的主键。在这种情况下,它将是district\u id
,而您希望它是name
,工作起来像个符咒。谢谢您不妨看看django文档的这一部分。