2016-09-16 3 views
0

私は、私は、DB内のユーザIDを格納していますCREATED_BYフィールドにこの変更特定のフィールド値を

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

のようなこの

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 

とシリアライザクラスのようなモデルを持っていますプロジェクトテンプレートをリストするとき、基本的にcreate_byフィールドのユーザーIDを取得します。

シリアライザクラスを変更してこのようなdictを得る方法

CREATED_BYフィールドの
{"user_id":id,"user_name":name} 

+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", 
     ) 
関連する問題