可能な限り、冗長なフィールドを含むdbスキーマを避けようとします。動物テーブルにfkeyがある別の「動物タイプ」テーブルを考えてみましょう。
それで:
animal_type:
id type_name
1 cat
2 dog
3 monkey
動物:
id name type
1 kitty 1
2 fido 2
3 rover 2
4 mr banannas 3
など、長期的にはあなたの痛みを救うでしょう
編集:以下のコメントに答えるには、モデルのclean()関数をオーバーライドしてみてください。
class YourModel(models.Model):
first_property = models.FileField()
second_property = models.ImageField()
def clean(self)
from django.core.exceptions import ValidationError
if self.first_property.name not in ['', None] and \
self.second_property.name not in ['', None]:
raise ValidationError('Cannot have a first_property and a second_property!.')
これにより、モデルを保存しようとするたびにエラーメッセージがスローされますが、フォームにこれら2つの値を実際に入力することはできません。