0

我有一个包含这些字段的 django modelForm:

nod_id1 = models.ForeignKey('Eonodes',..)
nod_id2 = models.ForeignKey('Eonodes',..)

按预期呈现为下拉列表。

我想做以下事情:当用户从两个列表中选择一个选项时,需要执行一个 python 脚本,该脚本调用一个带有用户两个选项的参数的 db 函数。函数返回的内容我想保存到表单的其他字段(directiondb = models.IntegerField())。脚本可能是这样的:

cursor = connection.cursor()
cursor.execute("SELECT GETDIRECTIONDB(262,265) from sys.dual")
result = cursor.fetchall()

其中 262,265 是用户选择。

我怎样才能即时完成它,我的意思是在提交数据之前?

4

1 回答 1

1

在保存数据之前覆盖模型的保存方法以执行自定义操作。https://docs.djangoproject.com/en/dev/topics/db/models/#overriding-model-methods

def get_direction_db(self.nod_id1, self.nod_id2):
    cursor = connection.cursor()
    cursor.execute("SELECT GETDIRECTIONDB(262,265) from sys.dual")
    result = cursor.fetchall()
    return result[0]  # or whatever

class MyModel(models.Model):
    nod_id1 = models.ForeignKey('Eonodes',..)
    nod_id2 = models.ForeignKey('Eonodes',..)
    directiondb = models.IntegerField()

    def save(self, *args, **kwargs):
        self.directiondb = get_direction_db(self.nod_id1, self.nod_id2)
        super(MyModel, self).save(*args, **kwargs)
于 2012-07-17T11:29:45.570 回答