【问题标题】:How can I create group with the same name as the role name in DRF generics APIView如何在 DRF 泛型 APIView 中创建与角色名称相同名称的组
【发布时间】:2021-09-17 12:30:25
【问题描述】:

每次用户创建角色时,我都会尝试创建一个新组,问题是我的代码逻辑一直有错误,我真的不知道该怎么做才能让它工作,这就是我的到目前为止:

from rest_framework import generics
from django.contrib.auth.models import Group

class CreateRoleView(generics.ListCreateAPIView):
    queryset = Roles.objects.all()
    serializer_class = CreateRolesSerializers
    permission_classes = (IsAuthenticated,)

    def post(self, request, *args, **kwargs):
        role_name=self.kwargs['role_name']
        created = Group.objects.create(name=role_name)
        return self.create(request, created, *args, **kwargs)

这是我的问题的屏幕: enter image description here

这是我的序列化器:

class RolesSerializers(serializers.ModelSerializer):
      class Meta:
        model = Roles
        fields = ('__all__')

这是我的模型:

class Roles(models.Model):

    role_id = models.AutoField(primary_key=True)
    role_code = models.CharField(max_length=255, unique=True)
    role_name = models.CharField(max_length=255)
    description = models.CharField(max_length=255)

【问题讨论】:

  • 你必须在你的POST正文中传递了role_name,所以你需要从request.data访问它?
  • 我怎么可能将角色名称玩具传递给 POST 正文,不是 role_name=.kwargs['role_name'] enough 吗?
  • 它已经在那里了。可以试试打印吗
  • 那时我还没有创建角色。所以只需从request.data['role_name']获取角色名称
  • 我将第一行更改为role_name=get_object_or_404(Roles, role_name=request.data['role_name']),但它似乎可以正常工作,但不要创建任何新对象

标签: django api django-models django-rest-framework


【解决方案1】:

正如@bdbd 建议的那样,解决方案是:

class CreateRoleView(generics.ListCreateAPIView):
    queryset = Roles.objects.all()
    serializer_class = CreateRolesSerializers
    permission_classes = (IsAuthenticated,)

    def post(self, request, *args, **kwargs):
        role_name=request.data['role_name']
        # role_name=self.kwargs['role_name']
        created = Group.objects.create(name=role_name)
        return self.create(request, *args, **kwargs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2015-02-18
    • 2021-04-06
    相关资源
    最近更新 更多