【问题标题】:How to fix DateRangeFilter in order the date widget to appear properly如何修复 DateRangeFilter 以使日期小部件正确显示
【发布时间】:2020-06-21 05:08:40
【问题描述】:

对我的项目使用管理操作时,我发现我的日期小部件(日历)根本没有出现在我的表单中。

我成功安装了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】:

    您是否将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)
        )
    

    【讨论】:

    • 我已经添加到 INSTALLED_APPS。此外,我已经注册了这样的模型:admin.site.register(Order, OrderAdmin)
    • cost_center 应该做什么?
    • 是在表单中列出成本中心模型名称的 FK。我认为,这不会影响
    • 就我而言,它工作正常。我不知道问题是什么
    • 我添加了整个班级。它可能会有所帮助。
    猜你喜欢
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多