【问题标题】:django rest framework ModelSerializer, validations for http PUT and POSTdjango rest 框架 ModelSerializer,对 http PUT 和 POST 的验证
【发布时间】:2016-06-01 03:48:43
【问题描述】:

所以我有一个模型定义如下:

class Subscriber(models.Model):
      client_id = models.IntegerField()
      user_id = models.IntegerField()
      channel = models.ForeignKey(to=Channel, related_name='channel_subscribers')

      class Meta:
          unique_together = ('client_id', 'channel') 

这个模型的序列化器如下:

class SubscriberSerializer(serializers.ModelSerializer):

    class Meta:
        model = Subscriber
        fields = ('id', 'client_id', 'user_id', 'channel')

所以

  1. 我使用client_id=1channel_id=1user_id=1 向订阅者发出POST 请求。这导致创建一个Subscriber,比如id=1
  2. 现在我想更改上面step 1 中创建的订阅者的user_id。
  3. 所以我用client_id=1user_id=2channel_id=1Subscriberid=1 发出PUT 请求。
  4. 在这一步,序列化程序抛出一个错误,因为client_idchannel_id 的组合不是唯一的,这是Subscriber 模型中的一个约束。

我希望当我使用id=1 发出PUT 请求时,序列化程序实际上会针对除Subscriberid=1 之外的所有Subscriber 模型检查此约束。

django rest 框架是否提供任何东西来满足这个标准。或者我必须为创建和更新编写不同的序列化程序,我认为这是最丑陋的解决方案。

如果模型的结构不能改变,什么是这个问题的最佳解决方案。

【问题讨论】:

    标签: django validation serialization django-rest-framework http-put


    【解决方案1】:

    我想你可能正在寻找UpdateAPIView

    【讨论】:

      猜你喜欢
      • 2019-03-24
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 2014-05-03
      • 2016-05-03
      • 2013-10-05
      • 2015-08-07
      • 2023-03-09
      相关资源
      最近更新 更多