переопределить Django get_or_create

У меня есть модель, для которой я заменил метод 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 ? Что вы думаете?

6
задан Lutz Prechelt 14 September 2018 в 09:03
поделиться