我使用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中 - 它列出了district_id,并引用了区域的ID。
我的模特设置错了吗?为什么我不能将学区的名称传递给学校模型?
答案 0 :(得分:1)
如果要按名称过滤,则应使用
schools = School.objects.filter(district__name = 'Norfolk')
您应该注意到可能有多个带有该名称的区域,因为它不是模型District
的关键字(即它不是唯一的)。
答案 1 :(得分:0)
查看Django docs。您应该使用ForeignKey.to_field
。默认情况下,使用相关模型的主键。在这种情况下,它将是district_id
,您希望它为name
。