如何使用Django模型在ExtJS网格中获取外键值而不是键?

问题描述 投票:0回答:1

我正在使用Django 1.11和ExtJS4作为客户端创建一个简单的“任务管理器”Web应用程序。

每个用户创建的条目都有自己的类别。现在我有一个问题 - 在ExtJS网格中,条目的每个类别都显示为类别的“id”值。这是公平的,因为我使用外键来识别。

如何在ExtJS网格表中显示类型字段而不是id?

我尝试使用django'to_field = type'选项,它实际上有效,而不是'category_id = id',我有一个'category_id = type'。但是我的老师说这不是这种情况的解决方案,而在后端部分我应该使用'id'。

models.朋友

class Entry(models.Model):
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)
    category = models.ForeignKey('Category', on_delete=models.CASCADE)


class Category(models.Model):
    type = models.CharField(max_length=255, unique=True)

在views.py中,我正在为ExtJS客户端发送JSON格式

views.朋友

def JS_entries_list(request):
    list_of_entries = Entry.objects.all().values()
    context = {
        'data': list(list_of_entries)
    }
    return JsonResponse(context)

这是我用于网格商店的ExtJS模型。在这里,你可以看到我收到'category_id'作为'int'

Ext.define('Entry', {
        extend: 'Ext.data.Model',

        idProperty: 'entryID',

        fields: [{
            name: 'id',
            type: 'int',
        }, {
            name: 'uuid',
            type: 'string',
        }, {
            name: 'user_id',
            type: 'int',
        }, {
            name: 'headline',
            type: 'string',
        }, {
            name: 'body_text',
            type: 'string',
        }, {
            name: 'pub_date',
            type: 'date',
        }, {
            name: 'category_id',
            type: 'int',
        }, {
            name: 'fav_flag',
            type: 'bool',
        }, {
            name: 'published',
            type: 'bool',
        }]
    });

所以,如果我做对了,现在我应该从数据库接收'category id',然后在某个地方(在服务器或客户端)将其转换为'category type'并显示在extjs网格中。现在,请你帮我找一个正确而优雅的方法吗?

python django extjs4
1个回答
0
投票

在您的查询集上,您可以在.values()中指定数据库中所需的值,然后您将拥有一个对象列表。例如,list_of_entries = Entry.objects.all().values('headline', 'category__id', 'foo', 'bar')

看看here

© www.soinside.com 2019 - 2024. All rights reserved.