0

これらのフィールドを含むdjango modelFormがあります:

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

期待どおりにドロップダウン リストのようにレンダリングされます。

私は次のことをしたい: ユーザーが両方のリストからオプションを選択すると、ユーザーの 2 つのオプションを引数として db 関数を呼び出す Python スクリプトを実行する必要があります。関数が返すもの フォーム ( ) の別のフィールドに保存したいdirectiondb = models.IntegerField()。スクリプトは次のようになります。

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

ここで、262,265 はユーザーの選択です。

データが送信される前に、どうすればその場でそれを達成できますか?

4

1 に答える 1

1

モデルのsaveメソッドをオーバーライドして、データが保存される前にカスタムアクションを実行します。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 に答える