どのようにフィールドの依存関係を持つことができますか?Djangoモデル - フィールドの依存性
ケース1:ブールフィールドcall_me
が設定されている場合、telephone
が、そうでなければ
ケース2空白にする必要があります設定する必要があります。多くの場合、多くの分野category
に(値販売、家賃付き)を持っています販売などの値の一つが、その後、price_sale
は、そうでなければ
どのようにフィールドの依存関係を持つことができますか?Djangoモデル - フィールドの依存性
ケース1:ブールフィールドcall_me
が設定されている場合、telephone
が、そうでなければ
ケース2空白にする必要があります設定する必要があります。多くの場合、多くの分野category
に(値販売、家賃付き)を持っています販売などの値の一つが、その後、price_sale
は、そうでなければ
は、ケース1の場合は、あなたがモデルのclean
方法で簡単にそれを検証することができ、空白である必要があり、設定する必要があります。
from django.core.exceptions import ValidationError
class MyModel(models.Model):
...
def clean(self):
if self.call_me and not self.telephone.strip():
raise ValidationError('Telephone is required')
、M2Mの関係は、モデルが保存されているので、あなたのモデルにclean
を使用すると、このシナリオでは動作しません後までは追加されません。ただし、メソッド(ModelForm
)から編集することができます。これは、管理者または自分のビューで行うことができます。
しかし、唯一の可能な値が「販売」および「賃貸料」である場合、category
をM2Mとすると、設計が貧弱です。それでも "販売"と "家賃"は相互排他的なものなので、M2Mはとにかく不適切です(あなたのモデルは同時に "売却"と "賃貸料"の両方を経験しません)。
category
をCharField
とし、choices
を「sale」と「rent」で構成することをお勧めします。このようにすれば、ケース1と同じ方法でモデルのclean
メソッドを使用することができます。
あなたの返事をありがとう - ケース2の場合、 'categories'はセール、賃貸、休暇になりますので、私はジョインテーブルを持っている必要があります。 M2Mフィールドに少なくとも1行は必要ですか?ケース2への依存はどうですか? (私はかなりPython/Djangoの新機能です) – RS7
ケース1:
は、そのようにそれを行う電話番号の異なるテーブルを持っている人からForeignKey
をお持ちでない電話番号に(私はそれが人だと仮定しています)。一人につき複数の電話番号がある場合は、逆の方法で行います。それ以外の場合は、OneToOne
の使用を検討してください。
明らかに、ForeignKey
はnull可能になります。そうすれば、電話番号を持つ唯一の方法は、その人が電話番号を提供するかどうかである。
ケース2:
私はここにあなたのデータベース設計を理解していないので、私は答えることができません。ここでManyToMany
が必要な理由を詳細に説明する必要があります。
あなたのモデルのレイアウトがひどく聞こえるようです。データベーススキーマを正規化してみてください。 – cha0site
その部分は間違っているようですか? – RS7