Django:通过另一个mod访问模型的字段

2024-05-20 00:00:44 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有两个模型:

class Product(models.Model):
    BANANA = 'BAN'
    PRODUCT_CHOICES = (
        (BANANA, 'Banana'),
    ) 

    name = models.CharField(choices=PRODUCT_CHOICES, max_length=255, default=BANANA)
    shelf_life = models.IntegerField(null=True, blank=True)

class PurchasedOrder(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    purchased_date = models.DateTimeField(auto_now_add=True)
    expired = models.BooleanField(default=False)

目标:获取所有未过期且购买日期小于当前时间和产品保质期的采购订单

我尝试了下面的sudo代码ish,我想知道如何访问这个PurchasedOrder的产品保质期,因为purchaseorder有一个产品的外键。我可以创建一些for循环,但是必须有一种方法通过PurchaseOrder访问产品的保质期字段

PurchasedOrder.objects.filter(
    expired=False,
    purchased_date__lt=F(datetime.now() - product__shelf_life),
)

我将感谢您的帮助<;三


Tags: truedefaultmodel产品modelsproductclasschoices
1条回答
网友
1楼 · 发布于 2024-05-20 00:00:44

如果您使用的是PostgreSQL,那么这个answer应该可以为您解决这个问题

from datetime import timedelta
from django.utils import timezone

now = timezone.now()
PurchasedOrder.objects.filter(
    expired=False,
    purchased_date__lt=now - timedelta(days=1)*F("product__shelf_life"),
)

相关问题 更多 >