Как изменить представление Serializer для запроса GET и POST? В настоящее время я использую StringRelatedField в HotelSerializer, который позволяет только читать только Feld. Я не могу POST каких-либо данных, потому что StringRelatedField не сопоставляет идентификатор в моем случае. Однако id является manadotory. Для запроса POST.Как представить разные значения для методов GET и POST в одном поле сериализатора?
Если я использую PrimaryKeyRelatedField для размещения в HotelSerializer чем запрос POST будет выполнен и объект будет сохранен успешно
Но попав в апи для запроса GET Для отеля с идентификатором 1 ответ будет
{ "id": 1, "name": "asasa", "discription": "sasas", "location": 1, }
, но я хотел ответ должен включать название города не идентификатор Расположение Когда я сделать ПОЛУЧИТЬ Request
{ "id": 1, "name": "asasa", "discription": "sasas", "location": "delhi", }
или
{ "id": 1, "name": "asasa", "discription": "sasas","location": "Mumbai", }
модели
class Location(models.Model):
country = models.CharField(max_length=60)
city = models.CharField(max_length=60,db_index=True)
zipcode = models.CharField(max_length=10
class Hotel(models.Model):
name =models.CharField(max_length=200,db_index=True)
discription = models.TextField(blank=True,null=True)
location = models.ForeignKey(Location,related_name='hotels')
Serializer
class HotelSerializer(serializers.ModelSerializer):
location=serializers.StringRelatedField() #this line Cause Problem
class Meta:
model = Hotel
fields= ('id','name','discription','location',)
Я предлагаю вам сделать 2 сериализаторы, один для вставки или создать и другие для ГЭТ. – marin