Попытка сериализации данных из нескольких моделей - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь сериализовать три модели django в разделе моего API, но, похоже, ему не нравится, как я это делаю. Я следую документации https://www.django -rest-framework.org/ api-guide / Relations / # nested-Relations

Я попытался создать 3 сериализатора по одному для каждой модели, а затем собрать все вместе в полях последних

сериализаторов. py

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = ['name', 'user']

class UserCompanySerializer(serializers.ModelSerializer):
    class Meta:
        model = UserCompany
        fields = ['name']

class UserInfoSerializer(serializers.ModelSerializer):
    profile = UserProfileSerializer
    companys = UserCompanySerializer(many=True)

    class Meta:
        model = CustomUser
        fields = ['email', 'profile', 'companys']

Я думал, что это будет работать, но он возвращает ошибку:

Неправильно настроено в / user_info Имя поля profile недопустимо для модели CustomUser.

models.py

class UserCompany(models.Model):
    name = models.CharField(max_length=150, unique=True)

    def __str__(self):
        return self.name

class CustomUser(AbstractUser):
    username = None
    email = models.EmailField(_('email address'), unique=True)
    is_active = models.BooleanField(default=False)
    companys = models.ForeignKey(UserCompany, on_delete=models.CASCADE, null=True)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = CustomUserManager()

    def __str__(self):
        return self.email

class UserProfile(models.Model):
    name = models.CharField(max_length=300, unique=True)
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

    def __str__(self):
        return self.name
...