0

私はプロジェクトモデルを持っています。このプロジェクトには人 (プロジェクトに取り組んでいる人) が含まれています。プロジェクトに関するメモやプロジェクトの完了率など、各プロジェクト担当者のモデルも作成しようとしています。

individual_person_in_project私の問題は、対応するプロジェクト内の人だけにフィルターをかけたいということです。私は使用しようとしています

limit_choices_to = {'person_in_project':User}

Projectモデルの人物であるユーザーに選択肢を限定したいと考えています。

class Project(models.Model):
    project_name = models.CharField(max_length = 120,null = False,blank = False)
    project_percent_complete = models.IntegerField(blank = True,null = True, default = 0)
    person_in_project = models.ManyToManyField(User,related_name = 'project_person',blank = True)
    project_description = models.CharField(max_length = 300,null = True,blank = True)

class Project_Person(models.Model):
    corresponding_project = models.ForeignKey(Project,related_name = 'corresponding_project_this_user_is_in',null = False)
    individual_person_in_project = models.ForeignKey(User, related_name = 'a_person_within_the_corresponding_project', limit_choices_to = {'person_in_project':User})
    percent_complete = models.IntegerField(default = 0)
4

2 に答える 2

0

助けてくれてありがとう、とても役に立ちました。最も役に立ったコメントは ryanmrubin でした。また、それらの関係を促進するために ManyToManyField を介してスルーを使用することで、別のクラスを作成し、それをプロジェクトに関連付けることになりました。

この新しいクラスにさらに情報を結び付ける必要がある場合は、ManyToManyField を使用します。

class Project(models.Model):
    project_name = models.CharField(max_length = 120,null = False,blank = False)
    project_percent_complete = models.IntegerField(blank = True,null = True, default = 0)
    project_description = models.CharField(max_length = 300,null = True,blank = True)
    people_in_project = models.ManyToManyField(User,blank = True)

class Project_Tasks(models.Model):
    description = models.CharField(max_length = 120,blank = True)
    percent_complete = models.IntegerField(default = 0)
    user = models.OneToOneField(User,unique = True,blank = True, null = True)
    project = models.OneToOneField(Project,unique = True, blank = False, null = True)
于 2015-09-03T15:21:48.010 に答える
0

上にコメントを残しましたが、とにかく、これがより良い答えだと思います:

through オプションを使用して manytoanyfield の追加情報を追跡すると、次のようになります。

class Project(models.Model):
    ...
    person_in_project = models.ManyToManyField(User, related_name='project_person', blank=True, through=ProjectPerson)

ドキュメントは残りの詳細を説明していますが、その場合は limit_choices_to を処理する必要はありません。

于 2015-09-03T15:01:29.773 に答える