我有一个类,我想要覆盖get_or_create
方法。基本上,如果我的课程没有存储答案,我希望它做一些过程来获得答案,它不提供。该方法实际上是一种get_or_retrieve
方法。所以这是这个类:Django - 重写get_or_create与models.py
class P4User(models.Model):
user = models.CharField(max_length=100, primary_key=True)
fullname = models.CharField(max_length=256)
email = models.EmailField()
access = models.DateField(auto_now_add=True)
update = models.DateField(auto_now_add=True)
@classmethod
def get_or_retrieve(self, username, auto_now_add=False):
try:
return self.get(user=username), False
except self.model.DoesNotExist:
import P4
import datetime
from django.db import connection, transaction, IntegrityError
p4 = P4.P4().connect()
kwargs = p4.run(("user", "-o", username))[0]
p4.disconnect()
params = dict([(k.lower(),v) for k, v in kwargs.items()])
obj = self.model(**params)
sid = transaction.savepoint()
obj.save(force_insert=True)
transaction.savepoint_commit(sid)
return obj, True
except IntegrityError, e:
transaction.savepoint_rollback(sid)
try:
return self.get(**kwargs), False
except self.model.DoesNotExist:
raise e
def __unicode__(self):
return str(self.user)
现在我完全承认我已经使用db/models/query.py作为我的出发点。我的问题是这条线。
obj = self.model(**params)
我能够得到PARAMS,但我还没有确定self.model。我不明白需要什么,并且不直观地明白应该是什么样的价值。即使回头看query.py我也弄不清楚。谁可以给我解释一下这个?我真的很想了解它并修复我的代码。
感谢
你是正确的金钱。我最终成立了一名经理。我将在下面分享给其他人.. – rh0dium 2009-08-21 17:49:40