[django.db.utils.IntegrityError同时为我的视图编写APITestCase吗?

问题描述 投票:0回答:1

这里我正在为我的视图编写测试用例,但是测试失败并出现以下错误。

django.db.utils.IntegrityError:“ content_type_id”列中的值为空)>

违反了非null约束的详细信息:失败行包含(31,permission_name_1,null,perms1)。

我正在编写自己的角色模型,因为我需要更改ManyToManyGroup模型的默认User关系。

class CreateRoleTest(APITestCase):

    def setUp(self):
        self.user = User.objects.create_user(username='username',password='passwprd@321',email='[email protected]')
        self.permission = Permission.objects.create(name='permission_name',codename='perms')
        self.client = APIClient()

    def test_create(self):
        url = reverse('roles:create_role')
        data = {'user':self.user,'permissions':[self.permission.pk],'name':'role_name'}
        response = self.client.post(url,data,format='json')
        print(response.json())
        return self.assertEqual(response.status_code,status.HTTP_201_CREATED)

class UpdateDeleteRoleTest(APITestCase):
    def setUp(self) -> None:
        self.client = APIClient()
        self.user = User.objects.create_user(username='username1', password='passwprd@3211',
                                                         email='[email protected]')
        self.permission = Permission.objects.create(name='permission_name_1', codename='perms1')
        self.role = Role.objects.create(name='role1',user=self.user,permissions=[self.permission.pk])

    def test_update(self):
        data = {'user':self.user,'permissions':[self.permission.pk],'name':'role_name2'}
        url = reverse('roles:update_role',kwargs={'pk':self.role.pk})
        response = self.client.put(url,data,format='json')
        print(response.json())
        return self.assertEqual(response.status_code,status.HTTP_200_OK)

models.py

class Role(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    permissions = models.ManyToManyField(Permission)
    created = models.DateTimeField(auto_now_add=True)

views.py

class CreateRole(CreateAPIView):
    serializer_class = RoleSerializer
    queryset = Role.objects.all()

class UpdateRole(UpdateAPIView):
    serializer_class = RoleSerializer
    queryset = Role.objects.all()

    def put(self, request, *args, **kwargs):
        return self.partial_update(request, *args, **kwargs)

这里我正在为我的视图编写测试用例,但是测试失败并出现以下错误。 django.db.utils.IntegrityError:“ content_type_id”列中的空值违反了非空约束...

django django-rest-framework
1个回答
0
投票

嗯,说它缺少content_type_id列的值。这是Django自动生成的一列,用于跟踪您的模型。这条线很可能是错误的一条。

© www.soinside.com 2019 - 2024. All rights reserved.