简体   繁体   English

如何查找在给定日期范围内创建的对象?

[英]How to find objects created within given date range?

I have a model: 我有一个模型:

class Customer(models.Model):
    Name = models.TextField(blank=False)
    Surname = models.TextField(blank=False)
    PhoneNumber = models.TextField()
    Address = models.TextField()
    SendSms = models.BooleanField(default=True)
    SendEmail = models.BooleanField(default=True)
    Email = models.TextField()
    Created = models.DateField(auto_now_add=True)

    @classmethod
    def create(cls, name, surname, phoneNumber, address , sendSms, sendEmail, email):
        customer = cls(Name=name, Surname=surname, PhoneNumber=phoneNumber
                        , Address=address, SendSms=sendSms, SendEmail=sendEmail
                        , Email=email)
        customer.save()
        return customer

In a view, i want to find Customers created within given date range. 在视图中,我想查找在给定日期范围内创建的客户。 Let's say 7 days. 假设7天。

Below code: 下面的代码:

def RecentCustomers(request):
    return render_to_response("Customer/AllCustomers.html", {
        "customers": Customer.objects.filter(
            date__range=[datetime.date.today() - datetime.timedelta(days=7), datetime.date.today()])})

Gives: 得到:

Cannot resolve keyword 'date' into field. 无法将关键字“日期”解析为字段。 Choices are: Address, Created, Email, Name, PhoneNumber, SendEmail, SendSms, Surname, id, pet 选项包括:地址,创建的电子邮件,姓名,电话号码,SendEmail,SendSms,姓氏,ID,宠物

Error. 错误。 I have also tried: 我也尝试过:

def RecentCustomers(request):
    return render_to_response("Customer/AllCustomers.html", {
        "customers": Customer.objects.filter(Created >= datetime.date.today() - datetime.timedelta(days=7)})

But that gives: 但这给出了:

invalid syntax 无效的语法

Error. 错误。 How to i filter date for this? 我该如何过滤日期?

Customer.objects.filter(Created__gte=datetime.date.today() - datetime.timedelta(days=7))

By the way, it is a good practice to create your model fields, template names, directories, functions etc. always with lowercase names. 顺便说一句,最好使用lowercase名称创建模型字段,模板名称,目录,函数等。


from django.shortcuts import render

def recent_customers(request):
    customers = Customer.objects.filter(created__gte=datetime.date.today() - datetime.timedelta(days=7))
    return render(request, "customer/all_customers.html", {"customers": customers})

You might want to take a look at the style guide regarding naming convention rules in Python. 您可能想看看有关Python中命名约定规则的样式指南

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

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