def save_photo_description(self, user, title, caption, tag_list): self.title = title self.caption = caption i = 0 tag_list = set([t.strip() for t in tag_list if t.strip() != '']) for t in tag_list: i += 1 # 序号计数 # 统计标签 try: tt = Tag.objects.get(name=t) except Tag.DoesNotExist: tt = Tag(name=t) # 该标签首次出现,创建 else: tt.used_count += 1 # 该标签已存在,增加使用计数 tt.save() self.tags.add(tt) # 为照片添加标签,tags为多对多关系 # 为该用户添加使用的标签 try: usertag = UserTag.objects.get(user=self.owner, tag=tt) except UserTag.DoesNotExist: usertag = UserTag(user=self.owner, tag=tt) # 该用户从未使用过该标签,创建 else: usertag.used_count += 1 # 该用户已有该标签,增加使用计数 usertag.save() self.save() # 保存照片信息
def update_photo_info(self, title, caption, tag_list): self.title = title self.caption = caption tags = self.tags.all() # 将该照片的关联标签删除,并更新标签计数,如果为0,就删除标签 for t in tags: self.tags.remove(t) self.save() # 保存照片信息 t.used_count -= 1 usertag = UserTag.objects.get(user=self.owner, tag=t) usertag.used_count -= 1 if usertag.used_count <= 0: usertag.delete() else: t.save() if t.used_count <= 0: t.delete() else: usertag.save() i = 0 for t in tag_list: t = t.strip() # 去掉两端的空格 if t == '' or tag_list.index(t) != i: continue # 空字符串不是标签,存在重复,去掉重复的 i += 1 # 序号计数 # 统计标签 try: tt = Tag.objects.get(name=t) except Tag.DoesNotExist: tt = Tag(name=t) # 该标签首次出现,创建 else: tt.used_count += 1 # 该标签已存在,增加使用计数 tt.save() self.tags.add(tt) # 为照片添加标签 # 为该用户添加使用的标签 try: usertag = UserTag.objects.get(user=self.owner, tag=tt) except UserTag.DoesNotExist: usertag = UserTag(user=self.owner, tag=tt) # 该用户从未使用过该标签,创建 else: usertag.used_count += 1 # 该用户已有该标签,增加使用计数 usertag.save() self.save() # 保存照片信息