我的 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
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)
您可以重写客户端模型的保存方法。