通过对项目的管理,我想到了日期小部件(日历)根本没有出现在表单上的问题。
我成功安装了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)
没有人知道为什么我的窗口小部件根本不加载吗?
您是否将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)
)