Django Rest Framework值id正在发送,但接收时为null



在尝试设置interest_category时出现问题。这是我当前的代码。

序列化程序

class ProjectsSerializer(serializers.ModelSerializer):
interest_category = serializers.StringRelatedField()
class Meta:
model = Project
read_only_fields = (
'created_by',
'created_at',
'updated_at',
),
fields = (
'project_title',
'project_description',
'interest_category',
)

型号

class Project(models.Model):
project_title = models.CharField(max_length=255)
project_description = models.TextField(max_length=1500)
interest_category = models.ForeignKey(Interests, on_delete=models.CASCADE)
created_by = models.ForeignKey(User, related_name='projects', on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now_add=True)

视图

class ProjectViewSet(viewsets.ModelViewSet):
serializer_class = ProjectsSerializer
queryset = Project.objects.order_by('-created_at')

def perform_create(self, serializer):
serializer.save(created_by=self.request.user)

这是正在发送的数据

{
"project_title": "Test",
"project_description": "Test1",
"interest_category": 2
}

这是正在接收的数据

(35, Test, Test1, 2022-09-22 02:11:54.342202+00, 2022-09-22 02:11:54.342202+00, 1, null).

当我没有在序列化程序中使用interest_category = serializers.StringRelatedField()时,我可以发送数据而不会出现null错误

知道为什么interest_category显示null,以及为什么在使用serializers.StringRelatedField()时没有正确发送和/或接收CCD_4吗

如果是因为StringRelatedField,在发布ID时有更好的方法来获取名称吗?在前端,我将ID作为一个值进行传递

不使用interest_category = serializers.StringRelatedField()put因为CCD_ 9可以用于使用其CCD_。其中IntegerField表示一个整数。

因为您在数据中发送整数值:

{
"project_title": "Test",
"project_description": "Test1",
"interest_category": 2
}

最新更新