モデルから始めましょう
#models.py
class Project(models.Model):
owner = models.ForeignKey(User)
name = models.CharField(max_length=100)
class Issue(models.Model):
project = models.ForeignKey(Project)
title = models.CharField(max_length=100)
status = models.ForeignKey('Status')
class Status(models.Model):
name= models.CharField(max_length=10, help_text=u'eg open, closed...')
default = models.BooleanField(default=False)
project = models.ManyToManyField(Project)
def save(self, *args, **kwargs):
if self.default:
#self.__class__.objects.filter(default=True, project=self.project).update(default=False)
pass
ユーザーが別のオプションを選択したときにすべてdefaultを設定したいと思います。どうすればこれを達成できますか?FalseStatusdefault
編集:
Statusユーザーは自分のプロジェクトのカスタムを作成できるようになります。したがって、ユーザーが2つのプロジェクトを取得したとしましょう。これらはAudiとBMWと呼ばれます。
ここで、ユーザーはのを作成しStatusますIssue。その名前はになり、彼はそれをBMW内のopenすべてのデフォルトとして選択します。プロジェクトBMW内のすべての問題は、デフォルトのステータスになります。素晴らしい!IssuesProject open
ここで、ユーザーはの別のものStatusを作成しIssueます。今回は名前がになり、彼はそれをすべてのプロジェクトのnewデフォルトとして選択します。
したがって、私が必要としているのは、 BMWopen内の最初のステータスをに設定するもの(可能な限りクエリを少なくする)です。default = false