2016-08-06 12 views
0

Itemのモデルのシリアライザがあります。django rest frameworkの関連フィールドの異なるフィールドを表示

class Item(models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=150) 
    body = models.TextField(blank=True) 
    image = models.ImageField(upload_to=get_upload_file_name, blank=True) 

class ItemSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Item 
     fields = ('id', 'user', 'title', 'body', 'image') 

    def create(self, validated_data): 
     item = Item.objects.create(
      user=self.validated_data['user'], 
      title=self.validated_data['title'], 
      body=self.validated_data['body'], 
      image=self.validated_data['item_image'] 
     ) 
     return item 

ユーザーシリアライザ。

class CustomUserSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = CustomUser 
     fields = (
      'id', 'email', 'password', 'username', 'first_name', 'last_name', 
     ) 
     extra_kwargs = { 
      'password': {'write_only': True}, 
      'id': {'read_only': True} 
     } 

    def create(self, validated_data): 
     user = CustomUser.objects.create(
      email=validated_data['email'], 
      username=validated_data['email'], 
      first_name=validated_data['first_name'], 
      last_name=validated_data['last_name'], 
     ) 
     user.set_password(validated_data['password']) 
     user.save() 
     return user 

しかし、ItemSerialzerのuserフィールドでは、ユーザーのID、first_name、last_nameを表示します。これどうやってするの?これがノブの質問であればごめんなさい、私は初心者です。ありがとうございました。

+0

カウユーは、項目シリアライザでユーザーモデルの属性を表示したい場合は、項目とユーザーモデル –

+0

の間のモデル関係を表示します。 ItemSerializerで直接User serialiserを呼び出すことができます。 –

+0

@MushahidKhanアイテムモデルを追加しました。あなたはそれを見ていただけますか? –

答えて

1

DRFのsource属性を使用して、外部キーフィールドをトラバースできます。

class ItemSerializer(serializers.ModelSerializer): 
    user_id = serializers.CharField(source="user.id") 
    first_name = serializers.CharField(source="user.first_name") 
    last_name = serializers.CharField(source="user.last_name") 

    class Meta: 
    model = Item 
    fields = ('id', 'user', 'title', 'body', 'image','user_id', 'first_name', 'last_name') 
関連する問題