Я хочу сделать сообщение для модели NewVariation, используя сериализатор NewVariationSerializer. Я делаю массовое создание с Django REST Framework, как показано здесь .
Моя проблема в том, что мне нужен идентификатор в ContWindowSerializer, чтобы он был доступен для чтения, но я не могу получить к нему доступ в Метод создания родительского сериализатора, использующий - window_id = data['Cont_window']['id']
class ContWindowSerializer(serializers.ModelSerializer):
"""Serializes the Cont Window model."""
id = HashidSerializerCharField(
source_field='Conts.ContWindow.id',
read_only=True,
)
Cont = ContSerializer()
period_dates = DateRangeField()
start_time = serializers.TimeField(format='%H:%M')
end_time = serializers.TimeField(format='%H:%M')
class Meta:
model = models.ContWindow
fields = (
'id', 'Cont', 'period_dates', 'start_time', 'end_time',
)
class NewVariationSerializer(serializers.ModelSerializer):
"""Serializes the New Variation model."""
id = HashidSerializerCharField(
source_field='Conts.NewVariation.id',
read_only=True,
)
Cont_window = ContWindowSerializer()
reason = serializers.CharField(source='get_reason_display')
start_datetime = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S')
end_datetime = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S')
class Meta:
model = models.NewVariation
fields = (
'id', 'capacity', 'reason', 'Cont_window', 'start_datetime',
'end_datetime',
)
def create(self, data):
"""Handle New variation creation."""
window_id = data['Cont_window']['id']
Cont_window = models.ContWindow.objects.get(id=window_id)
data['Cont_window'] = Cont_window
return super().create(data)
Пожалуйста, дайте мне знать, как это исправить или если есть лучший способ сделать это. Было бы здорово, если бы я мог получить объект ContWindowSerializer в метод create без запроса get.