私が事前に定義されたPRIVACY_CHOICES
とAbstractProfile
モデルがあります:抽象クラスの選択肢を無効にするにはどうすればよいですか?
class AbstractProfile(models.Model):
PRIVACY_CHOICES = (
(1, _('all')),
(2, _('no one')),
)
title = models.CharField(_('title'), max_length=30)
info = models.TextField(_('information'), max_length=500, blank=True)
info_privacy = models.IntegerField(_('show information to'), default=1, choices=PRIVACY_CHOICES)
city = models.CharField(_('location'), max_length=30, blank=True)
city_privacy = models.IntegerField(_('show location to'), default=1, choices=PRIVACY_CHOICES)
address = models.CharField(_('address'), max_length=30, blank=True)
address_privacy = models.IntegerField(_('show address to'), default=1, choices=PRIVACY_CHOICES)
class Meta:
abstract = True
class UserProfile(AbstractProfile):
PRIVACY_CHOICES = (
(1, _('all')),
(2, _('friends')),
(3, _('friends of friends')),
(4, _('only me')),
)
title = None
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
names_privacy = models.IntegerField(_('show names to'), default=1, choices=PRIVACY_CHOICES)
birth_date = models.DateField(_('birth date'), null=True, blank=True)
birth_date_privacy = models.IntegerField(_('show birth date to'), default=1, choices=PRIVACY_CHOICES)
avatar = models.ImageField(upload_to='users/avatar', null=True, blank=True)
UserProfile
がAbstractProfile
からフィールドを持っていますが、独自のPRIVACY_CHOICES
とすべきです。現在の実現では、PRIVACY_CHOICES
がUserProfile
の場合、PRIVACY_CHOICES
はAbstractProfile
に上書きされません。どのように解決することが可能ですか?将来的にも、私は1.10
抽象的な上にそのプライバシーフィールドを定義するのではなく、CompanyProfileに移動して抽象的に定義しないのはなぜですか? –
必要に応じて同じフィールドを多くのクラスで繰り返すことを意味しますか? DRY方法ではありません:) – TitanFighter
私は2つのモデルと2つの定義を参照してください。それは私のようには見えません。 DRYは重要ですが、通常は操作上の解決策が必要です。私はそれが別の会場で最も残された議論だと思う。 –