如何修复 django Rest Framework 中的“IntegrityError 外键约束失败”错误?

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

我的 django 应用程序中有客户端(AbstractUser)和团队模型

class Team(models.Model):
    name = models.CharField(max_length=255)


class Client(AbstractUser):
    team = models.ForeignKey(Team, blank=True, null=True, related_name='client', on_delete=models.SET_NULL, db_index=True)
    name = models.CharField(max_length=255)
    code = models.CharField(max_length=255, unique=True)
    pass

因此,当我使用客户端(不是超级用户,有权添加-更改客户端)登录时,我无法更改客户端。我想成为每个团队的一名管理员来管理自己的团队,可以添加或更改客户。所以拥有 is_staff 权限的 Client 可以管理自己的团队。但它给出了错误 IntegrityError。 Django admin.py

django django-admin
1个回答
0
投票
from django.db import models
from django.contrib.auth.models import AbstractUser

class Team(models.Model):
    name = models.CharField(max_length=255)

class Client(AbstractUser):
    team = models.ForeignKey(Team, blank=True, null=True, related_name='client', on_delete=models.SET_NULL, db_index=True)
    name = models.CharField(max_length=255)
    code = models.CharField(max_length=255, unique=True)

    def save(self, *args, **kwargs):
        if self.is_staff:
            if self.team is not None:
                super().save(*args, **kwargs)
            else:
             
                raise ValueError("Staff users must have a team assigned.")
        else:
            
            super().save(*args, **kwargs)

您可以重写客户端模型的保存方法。

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