0

我正在使用 Django Rest Framework 为移动应用程序提供 API。我有两个模型,订单和用户。订单与用户有外键关系。

对于大约 1% 左右的订单对象,用户字段为空。我一直在使用 cURL 测试这种行为。

如果我在没有用户对象的情况下执行 cURL,它会告诉我“此字段是必需的”。如果使用错误的用户对象完成,它会告诉我该对象不存在。这两者都是预期的和预期的行为。

我试图弄清楚如何在没有用户字段的情况下保存某些 Order 对象。有什么我没有考虑到的吗?

我的看法:

class OrderList (generics.ListCreateAPIView):
    model = Order
    serializer_class = OrderSerializer

和序列化器:

class OrderSerializer (serializers.ModelSerializer):
    user = serializers.SlugRelatedField(slug_field = 'user')
    partial = True

    class Meta:
        model = Order

楷模:

class User (models.Model):
    uid = models.CharField(max_length =200, unique=True)

class Order (models.Model):
    uid = models.ForeignKey (User, related_name = "orders", verbose_name = "User",blank=True, null=True)
4

2 回答 2

0

您可以使用两个不同的ModelSerializer类,一个用于创建,以确保Order在没有相关的情况下无法创建对象User,另一个用于更新订单,传递required=False给相关字段的构造函数,以便您仍然可以保存现有的订单不是相关的User

于 2013-06-17T10:42:02.020 回答
0

尝试将default=None添加到您的 models.ForeignKey 声明中。您也可以在 users 表中创建一个匿名用户,当未指定用户时,它可以设置匿名用户。

于 2017-09-18T16:53:57.103 回答