4

別の[関連付けられた]フィールドに特定の値がある場合、必須フィールドを非必須にするにはどうすればよいですか?

次のモデルがあるとします。

class foo(models.Model):
    bar = models.CharField(max_length=200)
    foo_date = models.DateTimeField()

保存して、bar に特定の値が含まれている場合、foo_date を非必須にしたいと考えています。どうすればそれを達成できますか? ありがとう。

4

2 に答える 2

3

T.ストーンは正しいです。これは、モデル フォームで行う方法です。

class foo(models.Model):
    bar = models.CharField(max_length=200)
    foo_date = models.DateTimeField()

class ClientAdmin( MyModelAdmin ):
    form = FooModelForm

class FooModelForm( forms.ModelForm ):

    def clean(self):
        cleaned_data = self.cleaned_data
        if cleaned_data.get("bar") == 'some_val' and not cleaned_data.get('foo_date'):
            msg = 'Field Foo Date is mandatory when bar is some_val'
            self._errors[field] = ErrorList([msg])
            del cleaned_data[field]
        return cleaned_data

http://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other

于 2009-09-11T13:22:11.290 に答える
2

foo_barr を blank=True に設定してから、管理モデルが使用する独自のフォームとカスタム検証を実装するだけでよいと思います。ドキュメントのこの部分を参照してください --カスタム検証を管理者に追加する

于 2009-09-10T22:45:03.910 に答える