2016-09-16 75 views
0

特定字段的值我有這樣更改序列化器類

class ProjectTemplate(models.Model): 
    project_template_id = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=64) 
    description = models.TextField(max_length=255) 
    created_date = models.DateTimeField(auto_now_add=True) 
    modified_date = models.DateTimeField(auto_now=True) 
    created_by = models.IntegerField(blank=True, null=True) 
    modified_by = models.IntegerField(blank=True, null=True) 
    activated = models.BooleanField(default=False) 
    org_id = models.IntegerField(blank=False,null=False) 

    class Meta: 
     db_table = 'project_template' 

    def __str__(self): 
     return self.name 

模型和串類像CREATED_BY領域本

class ProjectTemplateSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = ProjectTemplate 

我正在存儲用戶ID在數據庫中,當列出項目模板,基本上我會得到create_by字段的用戶ID,

如何更改我的序列化程序類以獲得像這樣的字典

{"user_id":id,"user_name":name} 

爲CREATED_BY場

+1

爲什麼不只是做一個外鍵,用戶.. – Sayse

+0

OK,甚至是外鍵的用戶將存儲的用戶primary_key字段的值只?對吧?那該怎麼做? –

+1

不......它爲您提供了引用用戶實例的方式..文檔中詳細介紹了外鍵。距離它所說的自動爲你提供的'id'主鍵字段的部分不遠。 – Sayse

回答

0

就像Sayse說,你最好這樣一個外鍵的用戶:

create_by = models.ForeignKey("User", related_name="project_user") 

然後你可以從用戶訪問信息像USER_NAME什麼由:

class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = User 
     fields = ("id", "user_name") 

class ProjectTemplateSerializer(serializers.ModelSerializer): 
    user = UserSerializer(source="user", read_only=True) 

    class Meta: 
     model = ProjectTemplate 
     fields = (
      "id", "user", 
     )