Несколько моделей и один сериализатор

У меня есть одна основная модель Profile и три модели с отношением OneToOne к основной модели (ProfileFacebook, ProfileGoogle, ProfileTwitter).

Я хочу создать ProfileSerializer, и в зависимости от запроса он будет выдавать правильные данные из определенной модели и таблицы.

class Profile(models.Model):
    active = models.BooleanField(blank=True, null=True)
    address = models.CharField(max_length=32, null=True, blank=True)

    status = models.CharField(max_length=255, blank=True)
    category = models.CharField(max_length=255, blank=True)
    preferences = models.CharField(max_length=255, blank=True)


class ProfileFacebook(models.Model):
    profile = models.OneToOneField(Profile, related_name='profile_facebook', on_delete=models.CASCADE)
    account_uid = models.CharField(max_length=50, blank=True)
    secret = models.CharField(max_length=50, blank=True)
    passphrase = models.CharField(max_length=50, blank=True)


class ProfileGoogle(models.Model):
    profile = models.OneToOneField(Profile, related_name='profile_google', on_delete=models.CASCADE)
    account_uid = models.CharField(max_length=50, blank=True)
    secret = models.CharField(max_length=50, blank=True)
    passphrase = models.CharField(max_length=50, blank=True)


class ProfileTwitter(models.Model):
    profile = models.OneToOneField(Profile, related_name='profile_twitter', on_delete=models.CASCADE)
    account_uid = models.CharField(max_length=50, blank=True)
    secret = models.CharField(max_length=50, blank=True)
    passphrase = models.CharField(max_length=50, blank=True)


class ProfileSerializer(serializers.ModelSerializer):
    class Meta(BaseMeta):
        class Meta(BaseMeta):
        model = Profile
        fields = (
            'active', 'address', 'status', 'category',
            'preferences'
        )
        profile_fields = ('account_uid', 'secret', 'passphrase')
Вернуться на верх