私はモデルTeam
を持ち、ForeignKeyの関係はAgent
(私のユーザモデル)です。 team_leader
のエージェントがチームを無効にすると、team_member
が現在のチームに設定されているすべてのエージェントは、team_member
属性が削除され、NULL /空に設定されます。Django - モデルに関連するForeignKeysをすべて削除する
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
私が作ったいくつかのコメントとポインタ私の意見コードにエラーがあれば教えてください。ありがとうございました。
パーフェクトたとえば。それはうまくいった。私は 'request.user.AgentTeam'の代わりに' request.user.team_leader'を使用しなければなりませんでした。後者を使用すると、['Agent'オブジェクトに 'AgentTeam'属性がありません。]エラーが発生しました。ありがとうございました! – Valachio