有没有更好的方法在django Model方法中执行以下操作?以下看起来相当冗长,因为我可以在SQL shell中使用一行执行相同的操作:
class ItemMaster(models.Model):
...
@classmethod
@transaction.commit_manually
def update_imdb_rank(self):
'''
Update all ranks from the IMDbEntry table
'''
cursor = connection.cursor()
cursor.execute("UPDATE main_itemmaster i JOIN mturk_imdbentry m USING (imdb_url) SET i.imdb_rank=m.imdb_rank")
transaction.commit()
答案 0 :(得分:2)
如果您愿意,可以使用with
语句来减少详细程度:
class ItemMaster(models.Model):
...
@classmethod
def update_imdb_rank(self):
with transaction.atomic():
cursor = connection.cursor()
cursor.execute("UPDATE main_itemmaster i JOIN mturk_imdbentry m USING (imdb_url) SET i.imdb_rank=m.imdb_rank")