Как фильтровать по двум разным полям в запросе Django?
В моем проекте Django есть следующая модель:
class History(models.Model):
item = models.ForeignKey(Item,on_delete=models.CASCADE)
timestamp = models.BigIntegerField(default=0)
price = models.FloatField()
И я хочу фильтровать на основе элемента и метки времени. Идея заключается в том, что я хочу проверить, существует ли экземпляр модели или нет, прежде чем создавать новый экземпляр.
В настоящее время у меня есть следующее:
History.objects.filter(timestamp=timestamp).exists() == False:
Я фильтрую по метке времени, но я хочу сделать что-то вроде фильтрации по элементу и метке времени одновременно.
Например, если у меня есть item="phone", timestamp = 1640736000
item = Item
timestamp = 1640736000
History.objects.filter(timestamp=timestamp and item=item).exists() == False:
Но вышеуказанное, похоже, не работает.
Как мне поступить?
Редактировано:
Ниже приведена модель элемента,
class Item(models.Model):
name = models.CharField(default="", max_length=50)
description = models.TextField(default="No Description")
homepage = models.TextField(default="No Homepage")
def __str__(self):
return "{}-{}".format(self.Item,self.name)
Для фильтрации по нескольким полям в одном и том же фильтре вы предоставляете поиск в виде отдельных аргументов ключевых слов. Для фильтрации по отношениям, например, ForeignKey, используйте двойное подчеркивание после отношения
item = "phone"
timestamp = 1640736000
History.objects.filter(timestamp=timestamp, item__name=item).exists()