0

まず、以下の私のコードを見てください:

Project = models.ForeignKey(Project,null=False, blank=True)
if Porject is 'A':
    Owner = models.CharField(max_length=100, choices=**owner_set_A**)
else:
    Owner = models.CharField(max_length=100, choices=**owner_set_B**)

そのため、所有者の選択は owner_set_A から B に切り替える必要があり、Project の値に依存します。どうすればこれを行うことができるか教えてください。ティミーの返信に感謝しますが、models.Model で何をすればよいですか?

class Task(models.Model):
    project = models.ForeignKey(Project,null=False, blank=True)
    if Porject is 'A':
        Owner = models.CharField(max_length=100, choices=**owner_set_A**)
    else:
        Owner = models.CharField(max_length=100, choices=**owner_set_B**)

プロジェクト フィールドの値を取得する方法はありますか?

4

1 に答える 1

1

2 つの個別のフィールドは必要ありません。フィールドはデータを保持するだけです。代わりchoicesに、フォームでユーザーに表示されるものをフィルタリングする必要があります。たとえば、django admin を使用している場合は、次のようなことができます (未テスト)

class MyModelForm(forms.ModelForm):
    def __init__(self, *args, *kwargs):
         super(MyModel, self).__init__(args, kwargs)
         if self.fields['project'].foo == "bar":
             self.fields['owner'].choices = ((0, "X"), (1, "Y"),...)
         else:
             self.fields['owner'].choices = ((0, "A"), (1, "B"),...)

    class Meta:
         model = MyModel

admin.py

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm
于 2012-11-24T13:35:50.843 に答える