如何通过操作列数据使用F()更新Django中的update()值

时间:2019-02-27 06:10:28

标签: python django orm

我想针对某些列字段调用QuerySet.update()。更新值将通过一个函数调用来操纵,该函数具有其他列字段值的参数。这些其他列字段值是字符串类型。 我试图评估其他列值usign F(),传递给将要操纵该值的函数调用。但这给了我错误,因为F()没有返回field的实际值。

型号:

TestQAMap:
  answer = models.TextField(_('Answer'), null=False, blank=False,
                              db_column='answer')
  section_question = models.ForeignKey('SectionQuestionMap', null=False,
                                     blank=False,db_column='section_question_id')
  ae_score = models.DecimalField(_('Auto Evaluated Score'), null=True, blank=True,
                            db_column='ae_score', max_digits=5)

执行:

test_qa_map.update(ae_score=start_predicting(F('section_question__question__code'),
                 F('answer')))

方法start_predicting()是我的方法,该方法返回十进制值,需要2个字符串输入。

此代码工作正常,但我想避免for循环:

for test_qa in test_qa_map:
   try:
       question_code = test_qa.section_question.question.code
       test_qa.ae_score = start_predicting(question_code,test_qa.answer)
       test_qa.save()

0 个答案:

没有答案