1

在我的 Django 项目中,我使用 datatables.net jquery 插件在表格中显示来自我的 Django 模型的一些数据。我正在使用来进行服务器端处理。一切正常,但我必须显示另一个表中的一些数据,该表使用 Django 的 manytomany 字段链接到第一个表。目前它在数据表的每一行中显示“appname.Location.None”。

楷模

class Location(models.Model):
    location = models.CharField(max_length=200000, blank=True, null=True)
    lat = models.FloatField(blank=True, null=True)
    long = models.FloatField(blank=True, null=True)

    def __str__(self):
        return self.location

class Event(models.Model):
    name = models.CharField(max_length=200, blank=True, null=True)
    is_active = models.BooleanField(default=True)
    status = models.CharField(max_length=100, blank=True, null=True)
    types = models.CharField(max_length=500000, blank=True, null=True)
    impact = models.CharField(max_length=500000, blank=True, null=True)
    loc = models.ManyToManyField(to=Location, related_name='loc', blank=True)

    def __str__(self):
        return self.name

意见

class events(BaseDatatableView):
    columns = ['name', 'status', 'impact', 'types', 'id', 'loc']
    order_columns = ['name', 'status', 'impact', 'types', 'id', 'loc']

    def get_initial_queryset(self):
        return Event.objects.filter(is_active=True)

脚本

$(document).ready(function () {
                            $('#tableid').DataTable({
                                "processing": true,
                                "serverSide": true,
                                "ajax": "{% url 'evnts' %}",  //goes to class evnts
                                columns: [
                                    {
                                        data: 'name',                                        
                                    },
                                    {
                                        data: 'status',                                       
                                    },
                                    {
                                        data: 'impact',                                       
                                    },
                                    {
                                        data: 'types',                                   
                                    },
                                    {
                                        data: 'id',                                       
                                    },
                                    {
                                        data: 'loc'
                                    }
                                ]
                            });
                        });

做错了什么?

4

1 回答 1

0

我不得不稍微改变我的观点和脚本,我才能让它工作。

意见

class events(BaseDatatableView):
    columns = ['name', 'status', 'impact', 'types', 'id', 'loc']
    order_columns = ['name', 'status', 'impact', 'types', 'id', 'loc']

    def get_initial_queryset(self):
        return Event.objects.filter(is_active=True)
        def prepare_results(self, qs):
        data = []
        for item in qs:
            loc = []
            for loca in item.loc.all():
                loc.append(loca.location)
            loc = ' '.join(loc)
            data.append([
                item.name,
                item.status,
                item.impact,
                item.types,
                item.id,
                loc
            ])
        return data

我必须替换columns

columnDefs: [
                                    {
                                        targets: '0',
                                        name: 'name',                                       

                                    },
                                    {
                                        targets: '1',
                                        name: 'status',                                       
                                    },
                                    {
                                        targets: '2',
                                        name: 'impact',                                       
                                    },
                                    {
                                        targets: '3',
                                        name: 'types',                                       
                                    },
                                    {
                                        targets: '4',
                                        name: 'id',
                                    },
                                    {
                                        targets: '5',
                                        name: 'loc',                                      
                                    }
                                ]

在我的脚本 中,目标是指<th>表标签的类名。 例子

<th class="0">Name</th>
于 2020-12-01T11:42:58.540 回答