Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于Django中ForeignKey模型关系的困惑_Python_Django - Fatal编程技术网

Python 关于Django中ForeignKey模型关系的困惑

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

我使用的是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.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文档的这一部分。