У меня есть модель с двумя множественными полями и несколькими полями списка. Я хочу сериализовать данные в JSON для представления в Jquery DataTable.
Прямо сейчас я могу получить данные через HTTP-запрос - однако, когда я получаю данные в таблицу, это выглядит так:
Текущий вывод данных
Мой вопрос такой: Как либо отформатировать мои модели, либо подготовить данные для сериализации таким образом, чтобы значения отображались для пользователя в виде простых строк? Мне бы хотелось, чтобы во многих полях отображались имена пользователей, а поля списка отображались в виде строк, разделенных запятыми.
Сериализуемая модель:
class Project(models.Model):
meetingtypelist = [
('Introduction', 'Introduction'),
('Follow-Up', 'Follow-Up'),
('Formal Pitch', 'Formal Pitch'),
]
pursuitname = models.CharField(max_length=500)
datecreated = models.DateTimeField(auto_now=True)
bdmember = models.ManyToManyField('team.TeamMember')
meetingtype = models.CharField(max_length=200, choices= meetingtypelist)
sourcingbroker = models.ManyToManyField('team.Broker')
sendsurvey1 = models.BooleanField(default=False)
pursuitsize = models.IntegerField(max_length=20000, default=0)
servicelines = models.CharField(max_length=200)
techused = models.CharField(max_length=200)
briefcard = models.BooleanField(default=False)
class Meta:
ordering = ['datecreated']
def natural_key(self):
return self.my_natural_key
def __str__(self):
return self.pursuitname
Просмотров HTTP-запроса:
def Projects_asJson(request):
object_list = Project.objects.all()
json = serializers.serialize('json', object_list)
return HttpResponse(json, content_type='application/json')
Сценарий шаблона:
<script type="text/javascript" language="javascript" class="init">
$(document).ready(function() {
$('#projectTable').dataTable( {
"processing": true,
"ajax": {
"processing": true,
"url": "{% url 'project_list' %}",
"dataSrc": ""
},
"columns": [
{ "data": "fields.pursuitname" },
{ "data": "fields.sourcingbroker" },
{ "data": "fields.bdmember" },
{ "data": "fields.meetingtype" },
{ "data": "fields.servicelines" },
{ "data": "fields.techused" },
{ "data": "fields.briefcard" },
{ "data": "fields.pursuitsize" },
{ "data": "fields.sendsurvey1" },
{ "data": "fields.datecreated" },
// { "data": "pk" }
]
} );
} );
спасибо!