У меня есть модель, для которой я заменил метод save
, поэтому метод save
может быть передан в некоторые данные и автоматически заполнен в поле перед сохранением. Вот моя модель:
class AccountModel(models.Model):
account = models.ForeignKey(Account)
def save(self, request=None, *args, **kwargs):
if request:
self.account = request.session['account']
super(AccountModel, self).save(*args, **kwargs)
class Meta:
abstract = True
Идея состоит в том, что я настраиваю базовую модель для объектов, которые необходимо связать с учетной записью, и тогда мне не придется иметь дело с подключениями к учетной записи каждый раз, когда они появляются (что очень много ).
Но: Я также хотел бы использовать get_or_create
, который сохраняет новые объекты без передачи запроса. Я знаю, что можно не использовать get_or_create
и сделать try
/ , кроме
, но я хотел бы знать , есть ли способ чтобы переопределить get_or_create
и как это правильно сделать .
Я просмотрел код Manager
(который я хочу переопределить), а функция get_or_create
просто вызывает функцию QuerySet.get_or_create
. Может быть, я смогу написать его для использования других функций менеджера, а не QuerySet
версии get_or_create
?
Что вы думаете?