Django-删除模型的所有相关外键
我有一个名为Team的模型,与代理我的用户模型有一个ForeignKey关系。当团队领导的代理停用团队时,所有团队成员设置为当前团队的代理都将删除其团队成员属性并设置为NULL/empty 我读过,我知道我应该对.\u meta.get\u字段或收集器类做些什么。我正在试验get_字段,但尚未成功使其工作 models.py views.pyDjango-删除模型的所有相关外键,django,Django,我有一个名为Team的模型,与代理我的用户模型有一个ForeignKey关系。当团队领导的代理停用团队时,所有团队成员设置为当前团队的代理都将删除其团队成员属性并设置为NULL/empty 我读过,我知道我应该对.\u meta.get\u字段或收集器类做些什么。我正在试验get_字段,但尚未成功使其工作 models.py views.py 请提供一些关于我的视图代码和我所犯错误的注释和指针。谢谢。如果我理解正确,我看不出您需要遍历模型字段的原因 您可能不必费心处理模型的任何字段就可以离开。当
请提供一些关于我的视图代码和我所犯错误的注释和指针。谢谢。如果我理解正确,我看不出您需要遍历模型字段的原因 您可能不必费心处理模型的任何字段就可以离开。当AGENTDEAM值为空时,您可以只更新所有代理的团队成员状态。这可以在视图中完成,也可以在模型保存方法中完成。例如:
class Agent(AbstractUser):
team_member = models.ForeignKey('AgentTeam', on_delete=models.CASCADE, null=True, blank=True, related_name='team_member')
team_leader = models.OneToOneField('AgentTeam', on_delete=models.CASCADE, null=True, blank=True, related_name='team_leader')
class AgentTeam(models.Model):
team_is_active = models.BooleanField(default=False)
def save(self, *args, **kwargs):
super(AgentTeam, self).save(*args, **kwargs)
if not self.team_is_active:
Agent.objects.filter(
team_member=self
).update(team_member=None)
然后在视图中:
def deactivate_team(request):
team = request.user.AgentTeam
team.team_is_active = False
team.save()
完美的成功了。我必须使用request.user.team_leader而不是request.user.agenteam。当我使用后者时,我得到一个['Agent'对象没有属性'AgentTeam']错误。非常感谢。
class Agent(AbstractUser):
team_member = models.ForeignKey('AgentTeam', on_delete=models.CASCADE, null=True, blank=True, related_name='team_member')
team_leader = models.OneToOneField('AgentTeam', on_delete=models.CASCADE, null=True, blank=True, related_name='team_leader')
class AgentTeam(models.Model):
team_is_active = models.BooleanField(default=False)
def save(self, *args, **kwargs):
super(AgentTeam, self).save(*args, **kwargs)
if not self.team_is_active:
Agent.objects.filter(
team_member=self
).update(team_member=None)
def deactivate_team(request):
team = request.user.AgentTeam
team.team_is_active = False
team.save()