如何修复DateRangeFilter以便正确显示日期小部件

问题描述 投票:0回答:1

通过对项目的管理,我想到了日期小部件(日历)根本没有出现在表单上的问题。

我成功安装了django-admin-rangefilter并也将其导入。

我的模特

class Order(models.Model):
    stem_date = models.DateField("STEM")
    delivery_date = models.DateField("Delivery Date")

我的管理员。py

from rangefilter.filter import DateRangeFilter, DateTimeRangeFilter


list_filter = [('stem_date', DateRangeFilter), ('delivery_date', DateRangeFilter), ('cost_center')]

我正在使用Django版本= 2.2.6和python版本3.5.2

与订单有关的整个课程

class OrderAdmin(ReadPermissionModelAdmin):
    ### Default ordering with REF ###
    ordering = ('-ref',)
    #This Snippet is to order foreign key form fields
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
            if db_field.name == "port":
                    kwargs["queryset"] = Port.objects.order_by('port_name')
            if db_field.name == "customer":
                    kwargs["queryset"] = Customer.objects.order_by('customer_name')
            if db_field.name == "contact":
                    kwargs["queryset"] = Contact.objects.order_by('surname')
            return super(OrderAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

    actions = [export_model_as_csv]
    inlines = [Order_ProductsInline, Order_Product_ExtrasInline, Order_CommissionInline]
    #Function to make ref id readonly after save
    def get_readonly_fields(self, request, obj=None):
            if obj: # when editing an object
                    return ['ref']
            return self.readonly_fields
    #sos
    list_filter = [('stem_date', DateRangeFilter), ('delivery_date', DateRangeFilter), ('cost_center')]
    #list_filter = [('stem_date', DateRangeFilter), ('delivery_date', DateRangeFilter)]
    search_fields = ('customer__customer_name', 'vessel__ship_name', 'port__port_name', 'id', 'ref', 'supplier__customer_name')#if you look in foreign keys, must refferance with double underscore relevant field to other model
    list_display = ['ref', 'customer', 'supplier', 'vessel', 'port', 'cost_center', 'delivery_date', 'show_details','cancelled',]

    formfield_overrides = {
            models.DecimalField: {'widget': TextInput(attrs={'size':'6'})},
            models.BigIntegerField: {'widget': TextInput(attrs={'size':'6'})},
        }

    fieldsets = (
        (None, {
            'fields': (('ref'), ('customer', 'supplier'), ('vessel', 'imo', 'port', 'operator'), ('stem_date', 'delivery_date', 'contact'), 'cost_center', ('currency', 'bank_charges', 'branch'), ('cancelled'),('remarks'),)
            }),
        )

    list_per_page = 20

    #Function to show ID with 6 digits
    def order_id(self, obj):
        return str(obj.id).zfill(6)

    def show_details(self, obj):
        return_string = format_html('<a href="/private/intranet/orders/' + str(obj.id) + '/">Details</a>')
        return return_string
    show_details.allow_tags = True
    show_details.short_description = 'Details'


    def response_change(self, request, obj, post_url_continue=None):
    #This makes the response go to inquiry full detail page for an edited order
            return HttpResponseRedirect(reverse('orders', args=(obj.id,)))
            #return HttpResponseRedirect("../../orders/%s" % obj.id)

    def response_add(self, request, obj, post_url_continue=None):
    #This makes the response go to inquiry full detail page for a newlly added order to inquiry list
            return HttpResponseRedirect(reverse('orders', args=(obj.id,)))
            #return HttpResponseRedirect("../../orders/%s" % obj.id)#strip leading zeros


admin.site.register(Order, OrderAdmin)

没有人知道为什么我的窗口小部件根本不加载吗?

django date-range django-filters
1个回答
0
投票

您是否将rangefilter添加到了INSTALLED_APPS

如果是这样,请尝试:

from rangefilter.filter import DateRangeFilter
from .models import Order


@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
    list_filter = (
        ('stem_date', DateRangeFilter), ('delivery_date', DateRangeFilter)
    )
© www.soinside.com 2019 - 2024. All rights reserved.