使用以下类,我希望能够为所有“Ship_Back”对象选择所有相关数据,并首先按“Ring”排序,然后按“Ppack”排序。
当我根据我认为文档所说的内容和我从以前版本的Django中读到的其他帖子尝试命令我的查询集时,我收到了一个FieldError。我尝试将其简化为只对“Ppack”相关表进行排序,但这也不起作用。
型号:
class Ring(models.Model):
ring = models.IntegerField()
class Ppack(models.Model):
ppack = models.IntegerField()
ring = models.ForeignKey('Ring', on_delete=models.CASCADE)
class Ship_Back(models.Model):
ring_name = models.CharField(max_length = 20)
release = models.ForeignKey('Ppack', on_delete=models.CASCADE)
查看:
def index(request):
ship_back = Ship_Back.objects.all().order_by('Ppack__ppack')
这会产生以下错误:
/ p中的FieldError 无法将关键字“Ppack”解析为字段。选择是:id,release, release_id,ring_name
答案 0 :(得分:2)
改为使用:
order_by('release__ppack')
您在过滤器中使用ForeignKey
的字段名称,而不是相关模型的名称。想象一下,你对同一个模型有两个ForeignKey
关系,你会如何区分它们?
因此,对于您描述的订单,您可以执行以下操作:
order_by('release__ring__ring', 'release__ppack')