这是我的(简化的)用例:
from django.db import models
class MyType(models.Model):
whatever = models.CharField()
class A(models.Model):
type = models.ForeignKey(MyType)
class B(models.Model):
my_type = models.ForeignKey(MyType)
position = models.IntegerField(default=0)
我要从a中的元素按b的位置字段排序
是的。所以,我需要
在上连接A和B表
MyType
第一。试过这个:
A.objects.all().annotate(position=B.objects.get(my_type=models.F('type')).position).order_by('position')
得到错误:
FieldError: Cannot resolve keyword 'type' into field. Choices are: my_type, my_type_id, position
Django明白
F('type')
正在尝试获取模型B的“type”字段的值。当然,该字段不存在。
我想用A型的“类型”字段
是的。
看起来f应用于内部查询,而不是外部查询。
那么,有没有更好的方法得到我想要的?