Django(1.11)使用postgresql查询的ORM无法比较日期。我需要leave_date_from
和leave_date_to
之间的数据。
我期待一条记录。
我的模型如下:
class EmployeeLeaveApp(models.Model):
user = models.ForeignKey(User, models.DO_NOTHING, on_delete=models.CASCADE)
leave_date_from = models.DateField(blank=True, null=True)
leave_date_to = models.DateField(blank=True, null=True)
我的查看查询是:
inputdate = '2018-03-05'
duplicateleave = crm_models.EmployeeLeaveApp.objects.filter(
leave_date_from__gte=inputdate,
leave_date_to__lte=inputdate,
user=user)
我的表格数据如下:
leave_date_from | leave_date_to | user
2018-03-01 | 2018-03-10 | 1
2018-03-07 | 2018-03-22 | 1
到目前为止,我尝试了很多解决方案,但没有运气。
答案 0 :(得分:2)
public class ProductContext : ContainerContext<AutofacModule>
{
public IProductProvider ProductProvider { get; }
public static ProductContext GiventServices() => new ProductContext();
protected ProductContext()
{
ProductProvider = Resolve<IProductProvider>();
}
public List<JObject> WhenListProducts(int categoryId) => ProductProvider.List(categoryId);
}
==== OR ====如果出现错误[TestFixture]
public class ProductProviderTests
{
[Test]
public void ShouldHaveProducts()
{
var services = ProductContext.GiventServices();
var products = services.WhenListProducts(1);
products.Count.Should().NotBe(0);
}
[Test]
public void ShouldHaveDuplicateVariants()
{
var services = ProductContext.GiventServices();
var products = services.WhenListProducts(1);
var anyDuplicate = products.GroupBy(x => x.SelectToken("variant").ToString()).Any(g => g.Count() > 1);
anyDuplicate.Should().Be(true);
}
[Test]
public void ShouldNotHaveDuplicateGtins()
{
var services = ProductContext.GiventServices();
var products = services.WhenListProducts(1);
var anyDuplicate = products.GroupBy(x => x.SelectToken("gtin").ToString()).Any(g => g.Count() > 1);
anyDuplicate.Should().Be(false);
}
}
,请使用。
from datetime import datetime
inputdate = datetime.strptime(inputdate, '%Y-%m-%d')
duplicateleave = crm_models.EmployeeLeaveApp.objects.filter(
leave_date_from__gte=inputdate,
leave_date_to__lte=inputdate,
user=user
)
django期望参数中有一个dateobject,但是你要将字符串传递给它。所以使用这个