Django: как добавить метод «установить и сохранить» в класс Model? - PullRequest
0 голосов
/ 25 января 2019

Как создать set() метод для класса Model Джанго, который установит значения в указанные поля, а затем сохранит объект, так что его можно вызвать так:

object.set(field_1 = 0, field_2 = 1)

Вместо этого:

object.field_1 = 0
object.field_2 = 1
object.save()

1 Ответ

0 голосов
/ 25 января 2019

Вот реализация метода set() через прокси-класс:

class foo(models.Model)
  ...

class foo_proxy(foo)
  class Meta:
    proxy = True

  def set(self, **kwargs):
    for arg, val in kwargs.items():
      setattr(self, arg, val)
    self.save()

А вот через абстрактный класс:

class model(models.Model)
  class Meta:
    abstract = True

  def set(self, **kwargs):
    for arg, val in kwargs.items():
      setattr(self, arg, val)
    self.save()

class foo(model)
  ...
...