Реализация функции create для класса Serializer, содержащего foreignkey (Django Rest Framework)

Итак, вот как я реализовал класс:

class VenueSerializer(serializers.ModelSerializer):
    city = serializers.StringRelatedField(many=True)
    class Meta:
        model = Venue
        fields = '__all__'

    def create(self, validated_data):
        venue = Team(
            name=validated_data['name']
            #I know this is wrong but i just wanted to demonstrate what is it that i need to get done
            #city is the foreign key referencing to the model City
            city=validated_data['city']
        )
        venue.save()
        return venue

Итак, у меня есть модель для заведений, и каждое заведение должно быть связано с городом модели. Я новичок в REST Framework и не могу понять, как создать экземпляр модели заведения и одновременно установить значение поля city. Может ли кто-нибудь помочь мне с этим?

Чем ты

Вы можете использовать PrimaryKeyRelatedField, чтобы добавить отношение внешнего ключа к создаваемому объекту:

class VenueSerializer(serializers.ModelSerializer):
    city = serializers.PrimaryKeyRelatedField(queryset=City.objects.all())
    class Meta:
        model = Venue
        fields = '__all__'

Вы можете передать данные запроса следующим образом:

{
    "name": "MyVenue",
    ... (other venue related data)...,
    "city": 1,
}

где city является действительным внешним ключом к объекту City. Это автоматически установит внешний ключ на объект venue для вас, и вам даже не нужно переопределять create для его обработки.

Вернуться на верх