使用序列化程序如何在 django rest 框架中创建类别

Using serializer how to Create Category in django rest framework

我想在 django rest 框架中使用序列化程序创建类别。 名称将从前端输入字段提供。 我从 user = request.user 得到 user_id,从 request.user.cafe 得到 cafe_id。 我需要创建名称为 user_id 和 cafe_id 的类别。 我该怎么做?

这是模型

class Category(models.Model):
  user = models.ForeignKey(User, related_name="cat", blank=True, null=True, on_delete=models.CASCADE)
  cafe = models.ForeignKey(Cafe, related_name="category", blank=True, null=True, on_delete=models.CASCADE)
  name = models.CharField(max_length=255)
  
  class Meta:
    verbose_name_plural='Categories'
    
  def __str__(self):
    return self.name

这是序列化程序

class CategorySerializer(serializers.ModelSerializer):
  class Meta:
    model = Category
    fields = ['name']

和views.py

@api_view(['POST'])
@permission_classes((IsAuthenticated,))
def categoryCreate(request):
  user = request.user
  user_id = Category(user = user)
  cafe = request.user.cafe
  cafe_id = Category(cafe = cafe)
  
  serializer = CategorySerializer(user_id, cafe_id, data=request.data)
  data={}
  if serializer.is_valid():
    serializer.save()
    data["success"] = "Category Has Been Created!"
    return Response(serializer.data, status=status.HTTP_201_CREATED)
  return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

提前致谢

你可以这样

class UserSerializer(serializers.ModelSerializer):
   class Meta:
      model = User
      fields = "__all__"

class CafeSerializer(serializers.ModelSerializer):
   class Meta:
      model = Cafe
      fields = "__all__"

class CategorySerializer(serializers.ModelSerializer):
  user = UserSerializer(read_only=True)
  cade = CafeSerializer(read_only=True)
  class Meta:
    model = Category
    fields = ['name', 'user', 'cafe']