我有一個類,我想要覆蓋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