私はモデルモデルを持っています。このモデルには複数の属性があり、そのうち3つはdomaintld
,subdomain
,url
-OneToOneField
です。Djangoモデルのフィールドサブセットから1つだけのフィールドを許可します
私はこれらのフィールドから1つだけを空ではないようにしようとしています。
私のアプローチはうまくいきましたが、もっと良い方法があれば分かりました(私はPostgreSQLを使用しています)。
あなたはmodels.py
にこのような何かを持っていると仮定すると
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
self.clean()
super(Model, self).save(force_insert, force_update, using, update_fields)
def clean(self):
super(Model, self).clean()
if not(((bool(self.url)^bool(self.domaintld))^bool(self.subdomain)) and not(self.url and self.domaintld and self.subdomain)):
raise exceptions.ValidationError("One and only one field can be used: url,domaintld,subdomain")