我在尝试获取查询集时遇到问题。在django中过滤多个字段
我:
class RangeDate(models.Model):
start_date = models.DateTimeField(_("Start Date"))
end_date = models.DateTimeField(_("End Date"))
class Product(models.Model):
start_end_dates = models.ManyToManyField(RangeDate)
所以我尝试让所有的产品。并且只显示开始日期大于datetime.now()的RangeDates。我不知道一个查询集是否可以给出这个结果,或者如果我需要在一个循环中对待它们。
我还需要订购产品中的日期
希望你能帮助我。提前致谢。
编辑1 所以我做这个,但我认为这可能是一个更好的办法:
product = Product.objects.filter(start_end_dates__start_date__gt=
datetime.now())
但如果产品具有比现在更低的一个更大的,一个它也使我的产品,这让我重复的产品,所以我使用:
0123:product = Product.objects.filter(start_end_dates__start_date__gt=
datetime.now()).distinct()
然后在模型中我检查的日期做了一个功能
,我把它叫做模板:
{% if not date.is_older_than_now %}
---
{%endif}
和排序过滤器标签:
{% for date in product.start_end_dates.all|order_by:"start_date" %}
---
{% endfor %}
这不起作用。因为如果产品与RangeDate大于和小于1的产品有关系,则它也会提供产品。 –
当我最初回答问题时,这不是问题的一部分,我会根据更新情况了解是否可以改进。 –
@Lego Stormtroopr,'Q()'是qool,但是你也可以使用'.objects.exclude()'而不是'.objects.filter()' – Art