Несколько моделей и один сериализатор
У меня есть одна основная модель 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')