无法将post数据发送到Django中的api

2024-06-28 19:40:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法使用django rest框架将post数据发送到api。我使用postman发送数据,只有用户部分添加到数据库中,用户的活动被拒绝。我想不出这个问题。有人能帮我解决这个问题吗

将post数据发送到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"

url.py

 path('rest/',views.ActivityListView.as_view())

如何将活动数据添加到用户


Tags: 数据用户nameinlogtruemodelsusername
1条回答
网友
1楼 · 发布于 2024-06-28 19:40:10

UserSerializer中,您有以下行:

activity_periods = ActivitySerializer(many=True, read_only=True)

由于read_only设置为True,因此当您POST数据时,它将不会写入数据库。尝试将其设置为False

相关问题 更多 >