在django

时间:2015-07-08 01:17:39

标签: python django

有没有更好的方法在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()

1 个答案:

答案 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")