为包含外键的序列化器 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,
}

其中 cityCity 对象的有效外键。这将自动为您将外键设置为 venue 对象,您甚至不需要覆盖 create 来处理它。