Используя администратора для моего проекта, я столкнулся с проблемой, что мой виджет даты (календарь) вообще не отображается в моей форме.
Я успешно установил django-admin-rangefilter
и импортировал его.
моя модель
class Order(models.Model):
stem_date = models.DateField("STEM")
delivery_date = models.DateField("Delivery Date")
мой admin.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)
У кого-нибудь есть идеи, почему мой виджет вообще не загружается?