我尝试使用PersonScore在这3个表上执行内部连接,但它找不到persontype。我做错了什么?
型号:
class PersonScore(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
person = models.ForeignKey(‘Person’)
class Person(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
name = models.CharField(max_length=255)
class PersonType(models.Model):
person = models.ForeignKey(‘Person’)
type = models.CharField(max_length=255)代码:
PersonScore.objects.filter(person__name="Bob").prefetch_related("person__persontype")错误:
Cannot find 'persontype' on Person object, 'person__persontype' is an invalid parameter to prefetch_related()代码:
PersonScore.objects.filter(person__name="Bob").prefetch_related("person__persontype_set")错误:
KeyError: (1L,)发布于 2017-11-23 21:47:34
在PersonScore中,您应该使用select_related而不是prefetch_related
PersonScore.objects.filter(person__name="Bob").select_related("person__persontype")如果你想使用prefetch_related,你可以在Person中使用它
Person.objects.filter(personscore_set__name="Bob").prefetch_related("personscore_set"你可以在这里查看更多详细信息:What's the difference between select_related and prefetch_related in Django ORM?
我希望这会对你有所帮助。
https://stackoverflow.com/questions/45513299
复制相似问题