0

我有模特,

class Data(models.Model):
    a = models.CharField()
    b = models.IntegerField()
    c = models.IntegerField()
    d = models.IntegerField()
    e = models.IntegerField()
    f = models.IntegerField()
    x = models.Decimalfield(max_digits=10, decimal_places=3)
    y = models.Decimalfield(max_digits=10, decimal_places=3)

现在我必须通过公式更新每一行的字段 x 和 y:

x = 100 * b + ( c/log(d*e)) + e^2*f
y = 100 * b + ( c*log(d/e)) + e^2/f

我不知道该怎么做,使用 django F 这样,x & y 被存储为 fomated 数据,其中 b、c、d、e、f 是 int 的。并在 django 中使用带有 F() 的数学函数

4

1 回答 1

1

文档中:

Django 支持对 F() 对象使用加法、减法、乘法、除法和模运算,包括常量和其他 F() 对象。

对数不是受支持的运算,因此无法log(d*e)进入更新调用。在某些时候,您必须在 Python 中执行此操作,或者使用直接 SQL update。或者通过使用包含LOG(d)LOG(e)作为列的数据库视图而不是默认表。

剩下的你可以做:

Data.objects.update(x=(F('b') * 100 + F('e') * F('e') * F('f')), y=(F('b') + (F('e') * F('e')) / F('f'))

我知道如果没有对数,这并没有多大帮助,但我将它包括在内是为了演示在 F 对象上使用算术。

于 2013-08-01T20:13:32.140 回答