python - 无法将发布数据发送到 django 中的 api
问题描述
我无法使用 django rest 框架将发布数据发送到 api。我使用邮递员发送数据,只有用户部分添加到数据库中,用户的活动被拒绝。我不知道问题谁能帮我解决这个问题
将发布数据发送到 api
{
"name": "karen",
"username": "karen",
"timezone": "US/Samoa",
"activity_periods": [
{
"log_in": "2020-06-09T21:53:25.120897Z",
"log_out": null
},
{
"log_in": "2020-06-09T22:02:35.289891Z",
"log_out": null
},
{
"log_in": "2020-06-09T22:03:36.425212Z",
"log_out": null
}
]
}
但只存储用户数据活动被忽略像这样
{
"name": "karen",
"username": "karen",
"timezone": "US/Samoa",
"activity_periods": []
}
如何向用户添加活动数据...?
模型.py
class User(models.Model):
name = models.CharField(max_length=20)
username = models.CharField(max_length=20)
password = models.CharField(max_length=20)
timezone = models.CharField(max_length=32, choices=TIMEZONES, default='UTC')
def __str__(self):
return self.name
class Activity(models.Model):
user = models.ForeignKey(User, related_name="activity_periods",on_delete=models.CASCADE,null=True, blank=True)
log_in = models.DateTimeField(null=True, blank=True)
log_out = models.DateTimeField(null=True, blank=True)
def __str__(self):
return self.user.name
序列化程序.py
class ActivitySerializer(serializers.ModelSerializer):
class Meta:
model = Activity
fields = ['log_in', 'log_out']
class UserSerializer(serializers.ModelSerializer):
# Passing login Logout to User
activity_periods = ActivitySerializer(many=True, read_only=True)
class Meta:
model = User
fields = ['name', 'username','timezone', 'activity_periods']
视图.py
class ActivityListView(generics.ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
name = "activity-list"
网址.py
path('rest/',views.ActivityListView.as_view())
如何向用户添加活动数据...?
解决方案
在您的UserSerializer
中,您有以下行:
activity_periods = ActivitySerializer(many=True, read_only=True)
由于read_only
设置为 True,因此当您POST
将数据写入数据库时,它不会被写入。尝试将其设置为 False。
推荐阅读
- optimization - 如何在 MiniZinc 中加入启发式算法?
- typescript - 声明两个不相关类型的公共属性名称的编译器可检查数组
- javascript - javascript - 将文件从一个目录复制到另一个目录
- javascript - Frida hook final 原生
- html - 菜单导航自行关闭
- php - Laravel 5.6 更新数据透视表列而不更新现有值
- java - 颜色选择器更改布局颜色
- c# - 使用 C# 将 SSL 证书应用于 IIS 中的站点
- sqlite - 根据变量递增值
- javascript - Mongoose - 为什么我们在设置 mongoose 模块时使用“mongoose.Promise = global.Promise”?