Джанго: доступ к полю модели через другую модель - PullRequest
0 голосов
/ 14 мая 2019

Итак, у меня есть 2 модели:

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, и мне хотелось бы узнать, как получить доступ к сроку годности продукта для этого Покупанного заказа, поскольку у Заказа на покупку есть Внешний ключ для Продукта.Я мог бы создать цикл for, но должен быть способ получить доступ к полю срока годности продукта с помощью PurchaseOrder.

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

Я буду признателен за вашу помощь <3 </p>

1 Ответ

1 голос
/ 14 мая 2019

Этот ответ должен решить его для вас, если вы используете PostgreSQL.

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"),
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...