为包含外键的序列化器 class 实现创建函数
Implementing a create function for a Serializer class containing foreignkey
所以,这就是我实现 class:
的方式
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 的新手,我想不出一种方法来在设置城市字段的值时创建场地模型的实例。有人可以帮我解决这个问题吗?
比你
您可以使用 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
来处理它。
所以,这就是我实现 class:
的方式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 的新手,我想不出一种方法来在设置城市字段的值时创建场地模型的实例。有人可以帮我解决这个问题吗?
比你
您可以使用 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
来处理它。