2

django モデルの自動フィールド ID を設定して、データベース プロシージャから値を取得する方法はありますか。例えば:

class Service(models.Model):

id = models.CharField(max_length=50, primary_key=True, default=database_procedure)
name = models.CharField(max_length=50)
icon = models.CharField(max_length=150, default='iconset-info.png')
description = models.TextField()

データベースの手順は次のようになります。

CREATE FUNCTION database_procedure() RETURNS trigger AS $database_procedure$
    BEGIN
       [...]
    END;
$database_procedure$ LANGUAGE plpgsql;
4

2 に答える 2

1

適切なデータ型を返す限り、任意の関数をデフォルト値の式で使用できます。これには独自のものも含まれます。マニュアルでは次のように指定されています

DEFAULT default_expr

このDEFAULT句は、列定義が含まれる列にデフォルトのデータ値を割り当てます。値は変数のない任意の式です (現在のテーブル内の他の列へのサブクエリと相互参照は許可されていません)。デフォルト式のデータ型は、列のデータ型と一致する必要があります

大胆強調鉱山。
ただし、表示する機能はトリガー機能 ( RETURNS trigger) であり、そのためには使用できません

関数が返す場合、varcharまたは列の型に強制できるその他の型であれば、それを使用できます。単にdefault=myfunc()Django にある必要があります。それはSQLのDEFAULT myfunc()中にあります。CREATE TABLEパラメーターのない関数の例では、括弧を含めて空です。

于 2013-03-17T17:45:24.753 に答える
0

思いのままに使ってみませんか?

デフォルト値は呼び出し可能オブジェクトの場合があります。したがって、関数では、データベースにアクセスして何かを行うことができます。

また、信号が役立つ場合があります。

于 2013-03-17T17:50:26.397 に答える