【问题标题】:Using serializer how to Create Category in django rest framework使用序列化器如何在 django rest 框架中创建类别
【发布时间】:2021-04-15 19:44:53
【问题描述】:

我想用序列化器在 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)

提前致谢

【问题讨论】:

    标签: django django-models django-rest-framework django-views django-serializer


    【解决方案1】:

    你可以这样做

    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']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 2017-03-04
      • 2016-03-31
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      相关资源
      最近更新 更多