Я думаю, что лучший способ задать этот вопрос с помощью некоторого кода... могу ли я это сделать? (изменить: ОТВЕТ: нет)
class MyModel(models.Model):
foo = models.CharField(max_length = 20)
bar = models.CharField(max_length = 20)
def get_foo(self):
if self.bar:
return self.bar
else:
return self.foo
def set_foo(self, input):
self.foo = input
foo = property(get_foo, set_foo)
или я должен сделать это следующим образом:
Да, вы должны сделать это вот так:
class MyModel(models.Model):
_foo = models.CharField(max_length = 20, db_column='foo')
bar = models.CharField(max_length = 20)
def get_foo(self):
if self.bar:
return self.bar
else:
return self._foo
def set_foo(self, input):
self._foo = input
foo = property(get_foo, set_foo)
note: вы можете сохранить имя столбца как "foo" в базе данных, передав поле db_column в поле модели. Это очень полезно, когда вы работаете над существующей системой, и вы не хотите выполнять миграцию db без причины