Django Serializer 使用外键关系保存模型

Var*_*ain 3 python django django-models django-rest-framework

我正在尝试保存具有引用另一个表的外键的模型对象。试图为此编写序列化程序,但是我无法理解如何做到这一点,而且似乎也找不到正确的文档。我的模型对象:

class Restaurant(models.Model):

    name = models.CharField(null=False, max_length=255)
    min_order = models.CharField(null=False, max_length=255)
    # And so on

class RMenuCategory(models.Model):

    category_name = models.CharField(null=False, max_length=255)
    restaurant = models.ForeignKey('Restaurant')
Run Code Online (Sandbox Code Playgroud)

我的RMenuCategory模型序列化器类:

class RestaurantMenuSerializer(serializers.ModelSerializer):

    restaurant = serializers.PrimaryKeyRelatedField()

    class Meta:
        model = RMenuCategory
        fields = ('id', 'category_name', 'restaurant')
Run Code Online (Sandbox Code Playgroud)

使用 json 进行 api 调用:

{ "category_name" : "Italian", "restaurant_id" : 4}
Run Code Online (Sandbox Code Playgroud)

当我在我看来尝试以下操作时,这不起作用:

menu_cat = RestaurantMenuSerializer(data=data)
        if menu_cat.is_valid():
            category = menu_cat.save()
        else:
            exit()
Run Code Online (Sandbox Code Playgroud)

moz*_*azg 6

更改restaurant_idrestaurant

{ "category_name" : "Italian", "restaurant" : 4}
Run Code Online (Sandbox Code Playgroud)