Djangoでプロジェクトに取り組んでいますが、次の問題があります。
チームとプロジェクトの2つのクラスがあります。1つのプロジェクトを作成するときに、プロジェクトの作成時に選択したものをチームのユーザーに自動的に新しいプロジェクトに割り当てたいと思います。Projectのsaveメソッドをオーバーライドし、プロジェクトが作成された後、ユーザーをプロジェクトに割り当てます(保存した後、エラーが発生する前に行ったため)。私はいくつかの方法を試しましたが、どれもうまくいきません。試してみました:
self.user.add(*self.team.users.all())
self.save()
そして、これは機能しません。
繰り返してみました:
for uTeam in self.team.users.all():
self.users.add(uTeam)
どちらも機能しません。
私のために働く唯一の方法はこれですが、Djangoシェルでのみです:
P = Project.objects.get(pk=1)
T = Team.objects.get(pk=1)
P.user.add(*T.user.all())
P.save()
これは私が以下に持っている解決策ですが、Djangoでは機能しません(無限ループを与えます)
class Team(models.Model):
name = models.CharField(max_length=200,
help_text=_('name of the team'))
user = models.ManyToManyField(settings.AUTH_USER_MODEL,
related_name="members_of_team",
help_text=_('users of the team'),
null=True
)
and more....
class Project(models.Model):
id = models.AutoField(primary_key=True, null=False)
name = models.CharField(max_length=200,
help_text=_('name of project'),
)
team = models.ForeignKey(Team,`enter code here`
on_delete=models.PROTECT,
help_text=_('team of project'))
created_by = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.PROTECT,
related_name='creator_project',
blank=True,
null=False,
help_text=_('project created by'))
customer = models.ForeignKey(Customer,
on_delete=models.PROTECT,
help_text=_('customer'))
user = models.ManyToManyField(settings.AUTH_USER_MODEL,
related_name='users_team',
blank=True,
null=False,
help_text=_('users of this project'))
def save(self, *args, **kwargs):
if self.checkIntegrity():
super(Project, self).save(*args, **kwargs)
if self.user.all().count() < self.team.user.all().count():
T = Team.objects.get(pk=self.team.id)
P = Project.objects.get(pk=self.id)
P.user.add(*T.user.all())
P.save()
ご協力ありがとうございました