【发布时间】:2019-05-25 12:13:32
【问题描述】:
我有模特,比如:
def SomeModel(models.Model):
serial_num = models.IntegerField(unique=True)
count = models.IntegerField()
并且必须创建 2 个适用于此模型的 url。 但是,必须有 2 个不同的序列化器。例如:
- 对于第一个 url,用户数据必须有两个文件(serial_num 和 count) 对于第二个 url,用户的数据必须只有一个字段(count)。
- 在第二种情况下,将在 Serializers 类中生成 serial_num。
为一个模型制作 2 个不同的序列化程序是一种好习惯吗?
还有一个问题,验证呢?
字段“计数”取决于另一个模型。我认为将验证放入序列化程序类。但我不想在 2 个不同的序列化程序类(两个 url)中有 2 个相同的验证代码块。
【问题讨论】:
-
我没有看到为 1 个模型使用多个序列化程序的问题 - 对于不同的行为,您只需要为每个序列化程序提供单独的视图。
-
但是验证呢?两个操作系统序列化程序都必须验证依赖于另一个模型的字段“count”。
-
是的,您为每个序列化程序编写不同的验证。当然,您可以将其作为一个单独的函数,然后在序列化程序中调用它,通过 DRY。
-
然后您可以编写一个单独的类(又名 Mixin)来封装此验证,然后将此 mixin(从此类继承)应用于两个序列化程序
-
验证模型对象的更好方法是什么?在 Model 类还是在 Serializer 类中?
标签: django django-rest-framework