Расщепление модели Django с помощью свойства и сеттеров - PullRequest
0 голосов
/ 22 ноября 2018

Пытаясь разделить модель в уже работающем приложении, я использовал свойство и установщики, чтобы предотвратить потенциально сотни обновлений в базе кода.

Настройка модели:

class A(models.Model):
  name = models.CharField()
  type = models.CharField()
  spec = models.SmallIntergerField()

  @property
  def salary(self):
      self.b.salary

  @salary.setter 
  def salary(self, value):
      self.b.salary = value
      self.b.save()

class B(models.Model):
  a = models.OneToOneField(A)
  salary = model.IntergerField()
  height = model.IntergerField()

Использование модели

model_a = A(salary=129980, height=6.00, type="several types")
model_a.save()

Снова я использую свойство и установщики, чтобы избежать изменения запросов в старых файлах миграции и некоторых других местах, где запрос происходит в коде.

Вопрос:

  1. Использует ли свойство / установщики таким образом непреднамеренное количество запросов при вызове свойств модели A? Т.е. есть ли у этого минусы?

  2. Есть ли лучший способ сделать это?

Использование: Django 1.11

...