python - 在 django 中按日期过滤
问题描述
我正在尝试按日期过滤交货指令表。尤其是在 Delivery Instructions 中,表格数据将在创建后 7 天后删除。所以在它的模型中,我使用 DateTimeField 作为日期时间格式。但是在其他模型(例如 Part)中,我使用了 DateField,并且在 views.py 中我编写了与下面相同的函数并且它可以工作。但是按日期过滤的交货说明问题不起作用。
过滤器.py
class DIFilter(django_filters.FilterSet):
created_date = django_filters.CharFilter( widget=forms.TextInput(attrs={
'placeholder': 'YYYY-MM-DD'}))
class Meta:
model = DeliveryIns
fields = ['product','supplier', 'created_date']
视图.py
def get_queryset(self):
queryset = self.model.objects.all().order_by('-id')
if self.request.GET.get('supplier'):
queryset = queryset.filter(supplier_id=self.request.GET.get('supplier'))
elif self.request.GET.get('product'):
queryset = queryset.filter(product_id=self.request.GET.get('product'))
elif self.request.GET.get('created_date'):
queryset = queryset.filter(created_date=self.request.GET['created_date'])
return queryset
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['filter'] = DIFilter(self.request.GET, queryset=self.get_queryset())
DeliveryIns._base_manager.filter(created_date__lt=timezone.now() - timezone.timedelta(days=7)).delete()
return context
模型.py
class DeliveryIns(models.Model):
supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
created_date = models.DateTimeField(default=timezone.now)
class Part(models.Model):
supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
created_date = models.DateField(auto_now_add=True)
谁能帮我看看怎么回事?谢谢先进
解决方案
您无需在 Meta.fields 中指定您更改行为的字段,而是可以执行以下操作:
from django_filters import DateFilter
created_data = DateFilter(field_name, lookup_expr="exact")
推荐阅读
- swift - 我在 swift playground 上添加了 uiview 约束,但约束不起作用,为什么?
- c# - iText7 目录
- javascript - 从 MySQL 数据库获取数据到手风琴
- r - 在函数中包含 dplyr
- java - 推送列表中很少有文件从设备上传到服务器
- excel - VBA如果工作表存在继续代码
- java - 如何为“BottomNavigationView”的菜单图标设置图像,因为它只显示图像的设计,即结构......?
- c++ - 如何在一个 SQL 查询中更新和选择
- ffmpeg - 调用用户自己安装的 ffmpeg 可执行文件
- python-3.x - ImportError:无法导入名称“AlignDlib”