你好!我有一个视图模型:
class MyModel(models.Model):
name = models.CharField(name="name", max_length=128)
address = models.CharField(name="address", max_length=128)
code = models.CharField(name="code", max_length=10)
created_time = models.TimeField(name="created_time")
有一个序列化器:
class MySerializer(ModelSerializer):
class Meta:
model = MyModel
fields = ('address',)
有一个 viewSet 用于创建指定模型的条目:
class MyViewSet(GenericViewSet, CreateModelMixin, ListModelMixin):
http_method_names = ['post']
queryset = MyModel.objects
serializer_class = MySerializer
我需要确保在发送包含地址字段的 POST 请求时,会在数据库中创建一个条目。但是名称、代码、created_time 字段是在我这边设置的,具体取决于地址的内容。在这种情况下,对客户端的响应应该会收到我生成的代码字段。您能告诉我如何正确实施吗?如果可能,请提供代码示例。
PS我没有与DRF合作,我代表它非常弱。如果我正确理解了工作的逻辑,那么在路由之后请求到达 MyViewSet,MyViewSet 将它们传递给 MySerializer。MySerializer - 将数据从 JSON 转换为 DRF 对象。也就是说,创建我的所有字段的逻辑将在 MyViewSet 一侧
您可以重载
create
序列化程序方法,fields
也可以保留输出所需的所有字段并制作它们read_only
。ps
class MyViewSet(GenericViewSet, CreateModelMixin, ListModelMixin):
mixins 应该始终放在继承链的左侧,因为 通常需要它们来重载链中更远的类的方法。