Python Django Rest Framework select_related()字段错误在视图中被忽略 class城市(models.Model): 通过 班级负责人(models.Model): name=models.CharField(最大长度=30) 家乡=models.ForeignKey(城市,on_delete=models.SET_NULL,blank=True,NULL=True) 教材(models.Model): 作者=models.ForeignKey(Person,on_delete=models.CASCADE)

Python Django Rest Framework select_related()字段错误在视图中被忽略 class城市(models.Model): 通过 班级负责人(models.Model): name=models.CharField(最大长度=30) 家乡=models.ForeignKey(城市,on_delete=models.SET_NULL,blank=True,NULL=True) 教材(models.Model): 作者=models.ForeignKey(Person,on_delete=models.CASCADE),python,django,django-rest-framework,Python,Django,Django Rest Framework,据我所知,在selected_related()中只允许使用外键。 例如,Book.objects。选择相关('author\u hom乡') 我尝试了Book.objects.selected\u related('auther\u name')在django Shell中,它引发了django.core.exceptions.FieldError:select\u related中给出的非关系字段,正如我所期望的那样 但DRF视图中的相同代码不会引发任何错误。 这是DRF故意做的还是我遗漏了

据我所知,在selected_related()中只允许使用外键。 例如,
Book.objects。选择相关('author\u hom乡')

我尝试了
Book.objects.selected\u related('auther\u name')
在django Shell中,它引发了
django.core.exceptions.FieldError:select\u related
中给出的非关系字段,正如我所期望的那样

但DRF视图中的相同代码不会引发任何错误。
这是DRF故意做的还是我遗漏了什么?

Select related用于获取所有相关的表字段(列),您无法获取Select related中的特定字段。因此,您应该在foreignkey字段上调用select related,而不是在related表字段上调用select related,因此我认为将queryset从
Book.objects.selected\u related('author\u name')
更改为
Book.objects.selected\u related('author')
可以解决您的问题。

谢谢@Roham。但是
Book.objects.selected\u related('auther\u name')
在DRF中工作,没有任何错误。