#获取对象
tid_if=AnswerRecord.objects.filter(t_id=topic_id,q_id=quest_id)
#判断对象是否为空
if tid_if:
#有数据时更新数据
AnswerRecord.objects.filter(t_id=topic_id,q_id=quest_id).update(score=quest_score)
else:
没有数据时新建数据
AnswerRecord.objects.create(t_id=topic_id,q_id=quest_id,score=quest_score)
整理成
AnswerRecord.objects.update_or_create(
t_id=topic_id,#判断条件
q_id=quest_id,#判断条件
defaults={'score':quest_score}#更新对象
)
可以带上filter()等返回Queryset的方法,不要使用get()方法,因为返回的不是queryset对象
tips:
当开始实现不同的代码效率时,我觉得python和dajango入门了
create()
绝对新增,一定执行新增一条记录
get_or_creare()
判断记录,有就不新增,没有新增记录.和update_or_createb用法不同之处在于defaults可以为空,
update_or_create
判断记录,如果有就更新指定字段值,没有就新增记录
update()
纯粹更新
delete()
删除,可配合返回queryset的方法使用.
个人觉得比save()方法更灵活!