У меня есть данные для представления некоторых данных. Я уже делаю сериализатор, viewset и ajax для таблиц данных.
serializer.py
class UserSerializer(dserializers.DynamicModelSerializer):
"""UserSerializer class."""
organisation = DynamicRelationField('oree.serializers.organisation.OrganisationSerializer', embed=True, deferred=True)
# id = dserializers.IntegerField(read_only=True)
class Meta: # noqa D106
model = User
name = 'user'
fields = ('id', 'username', 'email', 'organisation', 'date_joined', 'is_staff')
datatables_always_serialize = ('id', 'email')
views.py
class UserViewSet(dviewsets.DynamicModelViewSet):
"""UserViewSet."""
serializer_class = UserSerializer
queryset = User.objects.order_by('email')
filter_fields = ('username', 'email',)
def get_options(self):
"""Helper method on datatables.
see: https://django-rest-framework-datatables.readthedocs.io/en/latest/tutorial.html
"""
return "options", {
"user": [{'label': obj.email, 'value': obj.pk} for obj in User.objects.all()],
"organisation": [{'label': obj.name, 'value': obj.pk} for obj in Organisation.objects.all()]
}
class Meta:
"""Meta class for viewset."""
datatables_extra_json = ('get_options',)
ajax.js
var KTDatatablesDataSourceAjaxServer = function() {
var initTable1 = function() {
var table = $('#kt_datatable');
// begin first table
table.DataTable({
serverSide: true,
ajax: {
'type': 'GET',
'url': '/v1/users?format=datatables&include%5B%5D=organisation',
// 'data' : { 'format': 'datatables' },
'dataSrc': function(jsonObj){
if(!jsonObj.data || !jsonObj.data.users){
// console.log(jsonObj.data)
return [];
}
console.log(jsonObj)
return jsonObj.data.users;
}
},
columns: [
{data: 'username', searchable:true, name: 'username'},
{data: 'email', orderable: true, searchable:true, name: 'email'},
{data: 'organisation.name', searchable:true, name: 'organisation.name'},
{data: 'date_joined', orderable: true, searchable:false},
{data: 'is_staff', orderable: true, searchable: false},
],
columnDefs: [
{targets: [0,1,2,3], render: function(data){
if (!$.trim(data)) {
return ''
} else {
return data
}
}
},
{targets: [4], render: function(data){
if (data == '1') {
return '<span > Admin </span>'
} else {
return '<span > Brand </span>'
}
}
},
{targets: [3], render: function(data){ return moment(data).format('YYYY-MM-DD') }} // moment.min.js required
]
});
};
return {
//main function to initiate the module
init: function() {
initTable1();
},
};
}();
jQuery(document).ready(function() {
KTDatatablesDataSourceAjaxServer.init();
});
Я не знаю, почему это не работает. Я уже установил фильтр в настройках, но ничего не происходит. Я использую динамический отдых в этом проекте. Любая помощь будет признательна! Спасибо!