【发布时间】:2018-04-22 18:23:49
【问题描述】:
我有一个名为 Team 的模型,与 Agent(我的用户模型)有一个 ForeignKey 关系。当team_leader 的代理停用团队时,所有将team_member 设置为当前团队的代理都将删除其team_member 属性并设置为NULL/空。
我读过this 和this,我知道我应该对._meta.get_fields() 或Collector 类做点什么。我正在尝试使用 get_fields(),但还没有成功。
models.py
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)
views.py
def deactivate_team(request):
request.user.AgentTeam.team_is_active = False # request.user in this case is the team_leader
# I need to set all the Agent's with team_member set to the request.user's team to NULL. I have experimented with the code below and gotten only errors, mostly related to ReverseToOne like ''ReverseManyToOneDescriptor' object is not iterable'
agents = [
f for f in AgentTeam._meta.get_fields()
if (f.one_to_many)
and f.auto_created and not f.concrete
]
for agent in agents:
objects = getattr(AgentTeam, agent.name).all()
for object in objects:
object.team_member = None
请在我的视图代码和我犯的任何错误上提供一些 cmets 和指针。谢谢。
【问题讨论】:
标签: django