Форматирование данных модели Django перед сериализацией в DataTable - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть модель с двумя множественными полями и несколькими полями списка. Я хочу сериализовать данные в 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" }
             ]
     } );
 } );

спасибо!

...