Реализация функции 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
для его обработки.