Django Rest Nested Relationship не работает - PullRequest
1 голос
/ 14 января 2020

Это определенные модели:

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)

Вот так выглядит сериализатор:

class UserSerializer(serializers.ModelSerializer):

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

    class Meta:

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

Я должен получить ключ info в ответ. Но в то время как ID, имя и статусные ключи возвращаются, информационный ключ отсутствует.

Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Использовать source аргумент,

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

    class Meta:
        model = User
        fields = ['id', 'name', 'status', 'info']
0 голосов
/ 14 января 2020

Вы можете использовать related_name в модели для ForaignKey. Что-то вроде:

user_id       = models.ForeignKey(User, on_delete = models.CASCADE, null = True, related_name="info")
...