モデルから始めましょう
#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
を設定したいと思います。どうすればこれを達成できますか?False
Status
default
編集:
Status
ユーザーは自分のプロジェクトのカスタムを作成できるようになります。したがって、ユーザーが2つのプロジェクトを取得したとしましょう。これらはAudiとBMWと呼ばれます。
ここで、ユーザーはのを作成しStatus
ますIssue
。その名前はになり、彼はそれをBMW内のopen
すべてのデフォルトとして選択します。プロジェクトBMW内のすべての問題は、デフォルトのステータスになります。素晴らしい!Issues
Project
open
ここで、ユーザーはの別のものStatus
を作成しIssue
ます。今回は名前がになり、彼はそれをすべてのプロジェクトのnew
デフォルトとして選択します。
したがって、私が必要としているのは、 BMWopen
内の最初のステータスをに設定するもの(可能な限りクエリを少なくする)です。default = false