1

This is the defined models:

class User(models.Model):

        name        = models.CharField(max_length=250)
        status      = models.IntegerField(default=1)
        created_at  = models.DateTimeField(verbose_name='date created', auto_now_add=True)
        updated_at  = models.DateTimeField(verbose_name='date updated', auto_now_add=True)



        def __str__(self):
            return self.name

class UserInfo(models.Model):

    user_id       = models.ForeignKey(User, on_delete = models.CASCADE, null = True)
    phone        = models.IntegerField()

    status               = models.IntegerField(default=1)
    created_at           = models.DateTimeField(verbose_name='date created', auto_now_add=True)
    updated_at           = models.DateTimeField(verbose_name='date updated', auto_now_add=True)


    def __str__(self):
        return '%d: ' % (self.user_id)

These is how the serializer looks like:

class UserSerializer(serializers.ModelSerializer):

    info = UserInfoSerializer(read_only=True, many=True)

    class Meta:

        model  = User
        fields = ['id', 'name', 'status', 'info']

I am supposed to get info key in the response. But while id, name & status keys are returned, info key is missing.

What am I missing here?

altu_faltu
  • 81
  • 5

2 Answers2

0

You can use related_name in the model for ForaignKey. Something like:

user_id       = models.ForeignKey(User, on_delete = models.CASCADE, null = True, related_name="info")
KrystianC
  • 422
  • 3
  • 13
0

Use source argument,

class UserSerializer(serializers.ModelSerializer):
    info = UserInfoSerializer(read_only=True, many=True, source='userinfo_set')

    class Meta:
        model = User
        fields = ['id', 'name', 'status', 'info']
JPG
  • 82,442
  • 19
  • 127
  • 206
  • Thanks for your answer,but it doesn't working for me. – altu_faltu Jan 14 '20 at 20:40
  • Why `userinfoset`? From where that name come from? It refers to what? I need to understand why you write the name like this to try to name my own fields here. –  May 21 '20 at 23:49
  • it is the **`related_name`**. Read more here, https://stackoverflow.com/questions/2642613/what-is-related-name-used-for-in-django – JPG May 22 '20 at 01:37