首页 > 解决方案 > 向 serializer.data 添加额外参数

问题描述

我从 rest api 得到三个字段,即序列化程序中的姓名、电话号码和电子邮件 ID,但我想在收到 api 时也存储日期时间。在数据库中,我创建了 4 列,即姓名、电话号码、电子邮件 ID、创建数据。如何在将当前日期时间参数保存到 posgtresql 数据库表“table_userdetails”之前将其添加到我的 serializer.data 中。请帮我解答,因为我是新手

下面是views.py的代码

@api_view(['GET', 'POST'])
def UserInfo(request):
    if request.method == 'GET':
        snippets = UserDetails.objects.all()
        serializer=UserDetailsSerializer(snippets, many=True)
        return Response(serializer.data)
    elif request.method =='POST':
        context=datetime.datetime.now()
        serializer = UserDetailsSerializer(data=request.data)
        print("serializer",serializer)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

下面是 Models.py 的代码

class UserDetails(models.Model):
   name=models.CharField(max_length=255)
   mobile_no=models.CharField(max_length=255)
   email_id=models.CharField(max_length=255)
   user_id=models.IntegerField(primary_key=True)
   created_date=models.CharField(max_length=255)

   class Meta:
      db_table=table_userdetails 
    
   def __str__(self):
       return self.response

下面是我的 serializer.py 代码

class UserDetailsSerializer(serializers.ModelSerializer):

    class Meta:
        model=UserDetails
        fields='__all__'

我已经在 post 方法中添加了上下文部分,但是如何添加 serializer.data 。请帮助我解决问题以及我在这里做错了什么。感谢任何帮助。谢谢

标签: pythondjangodjango-rest-frameworkdjango-serializer

解决方案


您不需要现在直接设置时间,因为您可以使用auto_add_nowon DateTimeField/ DateFieldmodel 字段

在 CharField 中保持日期是没有意义的


为了进一步参考,您可以update()request.data字典中添加附加属性,因为仅设置名为 context 的新变量什么都不做


推荐阅读