簡體   English   中英

按日期過濾 django

[英]Filter by date in django

我正在嘗試按日期過濾交貨說明表。 特別是只有在交貨說明中,表格數據將在創建后 7 天后被刪除。 所以在它的 model 中,我使用 DateTimeField 作為日期時間格式。 但是在其他模型(例如 Part)中,我使用了 DateField,並且在 views.py 中我編寫了如下相同的 function 並且它有效。 但是按日期過濾交貨說明的問題不起作用。

過濾器.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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM