def __init__(self, model, field, column_id, query_params, ordering_query_param):
self.model = model
self.field_name = field
self.order_field = None
if self.field_name.startswith("_") and self.field_name != "__str__":
raise SmartListException("Cannot use underscore(_) variables/functions in smart lists")
try:
self.model_field = self.model._meta.get_field(self.field_name)
self.order_field = self.field_name
except FieldDoesNotExist:
self.model_field = None
try:
field = getattr(self.model, self.field_name)
if callable(field) and getattr(field, 'admin_order_field', False):
self.order_field = getattr(field, 'admin_order_field')
if callable(field) and getattr(field, 'alters_data', False):
raise SmartListException("Cannot use a function that alters data in smart list")
except AttributeError:
self.order_field = self.field_name
pass # This is most likely a .values() query set
if self.order_field:
self.order = SmartOrder(query_params=query_params, column_id=column_id, ordering_query_param=ordering_query_param)
else:
self.order = None
评论列表
文章目录