@stayHARD

Как по разному сериализовать один и тот же объект?

Здравствуйте.
Интересует вопрос, как омжно по-разному сериализовать один и тот же объект в зависимости от содержимого другого поля?
Модель:
class Images(models.Model):
	file_name = models.FileField(upload_to = get_file_path_image)
	ordering = models.IntegerField()
	section = models.ForeignKey(Sections, related_name = "images")
	icon = models.FileField(upload_to = get_file_path_icon)
	icon_x = models.CharField(max_length = 500)
	icon_y = models.CharField(max_length = 500)
	text = models.CharField(max_length = 500)
	link_type = models.CharField(max_length = 500)
	link = models.FileField(upload_to = get_file_path_feature)


link_type бывает 3х типов - Видео, Панорама или Линк.
Соответственно в link записывается либо:
http://ec2**************.eu-west-1.compute.amazona...
либо
http://ec***************.eu-west-1.compute.amazona...
либо
google.com

Как в зависимости от типа указаного в link_type по разному сериализовать объект?
Делаю через serializers.SerializerMethodField('get_full_path_link')

def get_full_path_link(self, obj):
		if str(obj.link_type) == u'Video':
			return "http://ec***********.eu-west-1.compute.amazonaws.com" + obj.link.url
  • Вопрос задан
  • 327 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Eduard_90
А в чём вопрос-то? :-)
У вас есть метод get_full_path_link - делайте в нём всё что захотите.
Ну или я неправильно понял вопрос.
Ответ написан
Комментировать
@some1else
Если речь о django-rest-framework, то:
  1. Написать несколько классов сериалайзера.
  2. В вашем ViewSet переопределить метод get_serializer, и возвращать уже сериалайзер который применителен именно к этому случаю.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы