繁体   English   中英

基于 ForeignKey 模型字段的 Django 过滤器

[英]Django filter based on ForeignKey model field

我试图消除冗余的条形码模型字段。 mostrecentscantime条码的mostrecentscantime ,因为我可以引用mostrecentscan.time

class Scan(models.Model):
    time=DateTimeField(default=timezone.now)
    barcode=ForeignKey('Barcode',on_delete=models.CASCADE,related_name='scans')
    location=ForeignKey(Location,on_delete=models.CASCADE)
    
class Barcode(models.Model):
    barcode = CharField(max_length=50,unique=True)
    time_created = DateTimeField(default=timezone.now)
    mostrecentscan=ForeignKey(Scan,on_delete=models.CASCADE,related_name='+',null=True)
    mostrecentscantime=DateTimeField()

以消除该问题mostrecentscantime与此查询在那里我试图确定所有条形码的物件,出现time_createdtime的的mostrecentscan是大于7天。

工作查询:

barcodematches = Barcode.objects.annotate(
    diff=ExpressionWrapper(F('mostrecentscantime') - F('time_created'), output_field=DurationField())
    ).filter(diff__gte=timedelta(days=7))

在这种情况下,我不能简单地引用mostrecentscan.time 我还尝试向 Barcode 添加一个 @property 字段,但它也不起作用。

在这种情况下, F表达式可以遵循关系,所以这应该有效:

F('mostrecentscan__time') - F('time_created')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM