如何获取数据库表中不存在的自定义列?

时间:2018-06-21 07:12:51

标签: django django-rest-framework

如何在Django Rest框架中实现followig SQL查询

`SELECT `id` , `name_hi` as hi , `name_en` as en ,  false as `checked` FROM `tab_name` 

数据库表中不存在被选中的地方,即它不是一列。

id | hi | en | checked
1  | xx | xx | 0
2  | hi2| en2| 0
3  | hi3| en3| 0

我正在使用Django Rest框架。 我如何重命名这些字段还包括选中的

到目前为止,我已经在序列化程序中尝试过

class TabSerializer(serializers.ModelSerializer):
	 hi = serializers.CharField(source='name_en')
	 en = serializers.CharField(source='name_en')

    class Meta:
        model = Tab
        fields =('id','name_en','name_hi')

  

它只返回id name_en和name_hi,而与hi,en和check无关。

1 个答案:

答案 0 :(得分:1)

您在序列化程序中为其设置了列别名

  1. 对于列表别名

class TabSerializer(serializers.ModelSerializer):
	 hi = serializers.CharField(source='name_hi')
	 en = serializers.CharField(source='name_en')

    class Meta:
        model = TabFaultOption
        fields =('id','hi','en')

  1. 现在对于数据库中不存在的列,您需要在相关模型中进行更改

model.py

class Tab(models.Model):
    id = models.IntegerField()
    name_hi = models.CharField(max_length=1000)
    name_en = models.CharField(max_length=1000)
    checked=False
    
    class Meta:
        managed = False
        db_table = 'tab'

现在序列化程序中包括选中的列

 class TabSerializer(serializers.ModelSerializer):
    	 hi = serializers.CharField(source='name_en')
    	 en = serializers.CharField(source='name_en')
       checked= false
        class Meta:
            model = Tab
            fields =('id','hi','en','checked')