Tip

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

デフォルト値

はじめに

「デフォルト値」とは、新しいレコードを作成する際のフィールドの初期値のことです。コレクション(データ表)でフィールドを設定する際にデフォルト値を設定したり、「新規追加フォーム」ブロック内のフィールドにデフォルト値を指定したりできます。設定は定数または変数として行えます。

デフォルト値はどこで設定できますか?

コレクションのフィールド

20240411095933

新規追加フォームのフィールド

新規追加フォームのほとんどのフィールドで、デフォルト値を設定できます。

20251028161801

サブフォームでの追加

新規追加フォームまたは編集フォーム内のサブフォームフィールドを介して追加されたサブデータには、デフォルト値が適用されます。

サブフォームでの新規追加 20251028163455

既存データを編集する場合、空のフィールドにデフォルト値が自動的に入力されることはありません。デフォルト値が適用されるのは、新しく追加されたデータのみです。

関連フィールドのデフォルト値

デフォルト値が設定できるのは、「多対一」および「多対多」タイプの関連で、かつセレクターコンポーネント(Select、RecordPicker)を使用している場合に限られます。

20251028164128

デフォルト値変数

利用可能な変数

  • 現在のユーザー
  • 現在のレコード(既存のレコードにのみ適用されます)
  • 現在のフォーム(理想的にはフォーム内のフィールドのみがリストされます)
  • 現在のオブジェクト(サブフォーム内の概念で、サブフォームの各行のデータオブジェクトを指します)
  • URLパラメーター 変数の詳細については、変数 を参照してください。

フィールドのデフォルト値変数

関連フィールドと非関連フィールドの2つのカテゴリに分けられます。

関連フィールドのデフォルト値変数

  • 変数オブジェクトはコレクションのレコードである必要があります。
  • 継承チェーン内のコレクションである必要があり、現在のコレクションまたは親/子コレクションのいずれかです。
  • 「テーブルで選択されたレコード」変数は、「多対多」および「一対多/多対一」の関連フィールドでのみ利用可能です。
  • 多階層の場合、フラット化して重複を排除する必要があります。
// テーブルで選択されたレコード:
[{id:1},{id:2},{id:3},{id:4}]

// テーブルで選択されたレコード/toOne:
[{toOne: {id:2}}, {toOne: {id:3}}, {toOne: {id:3}}]
// フラット化して重複を排除
[{id: 2}, {id: 3}]

// テーブルで選択されたレコード/toMany:
[{toMany: [{id: 1}, {id:2}]}, {toMany: {[id:3}, {id:4}]}]
// フラット化
[{id:1},{id:2},{id:3},{id:4}]

非関連フィールドのデフォルト値変数

  • 型は一貫しているか、互換性がある必要があります。例えば、文字列は数値と互換性があり、toStringメソッドを提供するすべてのオブジェクトも同様です。
  • JSONフィールドは特殊で、あらゆる種類のデータを保存できます。

フィールドレベル(オプションフィールド)

20240411101157

  • 非関連フィールドのデフォルト値変数

    • 多階層のフィールドを選択する場合、一対一の関連に限定され、多対多の関連はサポートされません。
    • JSONフィールドは特殊で、制限なく設定できます。
  • 関連フィールドのデフォルト値変数

    • hasOne は一対一の関連のみをサポートします。
    • hasMany は一対一(内部変換)と多対多の両方をサポートします。
    • belongsToMany は一対一(内部変換)と多対多の両方をサポートします。
    • belongsTo は通常一対一ですが、親の関連が hasMany の場合は多対多もサポートします(hasMany/belongsTo は実質的に多対多の関連であるため)。

特殊なケース

「多対多」は「一対多/多対一」の組み合わせと同等です

モデル

20240411101558

なぜ一対一と一対多の関連にはデフォルト値がないのですか?

例えば、AとBの関連において、b1がa1に関連付けられている場合、b1はa2に関連付けられることはできません。もしb1がa2に関連付けられると、a1との関連は解除されます。このような場合、データは共有されません。一方、デフォルト値は(すべてが関連付けられる)共有メカニズムであるため、一対一および一対多の関連にはデフォルト値を設定できません。

なぜ多対一および多対多のサブフォームやサブテーブルにはデフォルト値がないのですか?

サブフォームやサブテーブルは、関連データを直接編集すること(追加や削除を含む)に重点を置いています。一方、関連のデフォルト値は共有メカニズムであり、すべてが関連付けられることはできますが、関連データを変更することはできません。そのため、このシナリオではデフォルト値を提供することは適切ではありません。

さらに、サブフォームやサブテーブルにはサブフィールドがあり、サブフォームやサブテーブルのデフォルト値が「行のデフォルト値」なのか「列のデフォルト値」なのかが不明確になります。

これらの要因を総合的に考慮すると、関連の種類に関わらず、サブフォームやサブテーブルに直接デフォルト値を設定できない方が適切です。