質問

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

次のモデルがあると仮定しましょう:

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

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

役に立ちましたか?

解決

T.Stoneは正しい。これは、モデルフォームを使用して行う方法です。

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

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top