我有一个模型,我覆盖了该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
/是可行的except
,但我想知道是否有方法可以覆盖get_or_create
以及正确的方法是什么。
我查看了Manager
(我正在查看覆盖)的代码,并且该get_or_create
函数只是调用了一个QuerySet.get_or_create
函数。也许我可以编写它以使用其他管理器功能而QuerySet
不是get_or_create
? 大家觉得呢?