[英]Django: print the last object of model for every (FK)
我有两个型号:
class Mantipo(models.Model):
tipo = models.CharField(max_length=255)
...
class BillInitial(models.Model):
tipo = models.ForeignKey(Mantipo, null=True, blank=True)
nombre = models.CharField(max_length=255)
...
假设我有“BillInitial”模型的以下对象:
| id | tipo (FK) | nombre |
| 1 | uno | X |
| 2 | dos | y |
| 3 | cinco | x |
| 4 | cinco | x |
| 5 | dos | z |
| 6 | uno | X |
我想输出nombre(X)的最后一个对象,如:
| id | tipo (FK) | nombre |
| 4 | cinco | x |
| 6 | uno | X |
您可能正在寻找以下内容:
BillInitial.objects.filter(nombre__iexact='x').order_by('-id')[:2]
可能是nombre__icontains
也很有用。
later_items_per_nombre = BillInitial.objects.filter(
nombre=OuterRef('nombre'),
tipo=OuterRef('tipo'),
pk__gt=OuterRef('pk')
)
BillInitial.objects.filter(nombre='x',).\
annotate(is_not_last=Exists(later_items_per_nombre), ).\
filter(is_not_last=False, )
我想,如果您使用PostgreSQL,您可以在tipo FK字段上使用distinct()
构建查询。 如果没有,也许尝试使用last()
如:
small_x = BillInitial.objects.filter(
nombre='x'
).last()
big_x = BillInitial.objects.filter(
nombre='X'
).last()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.