データベースへのフラスコテーブル行データ

フィリップ・ハウメッサー

これは私のテンプレートコードです:

 if request.method == 'POST':
            #------Invoice
     #-----Invoice details
            form = InvoiceReportEntries(request.form)
            # items = []
            for item in form.items:
                lineitem = InvoiceLineItem(description=item.description,
                                amount=item.amount,
                                invoice_id=invoice.id)
                db.session.add(lineitem)
                db.session.commit()

私のテンプレートは次のとおりです。

<form method="POST">
            {{ form.hidden_tag() }}
            <table>
                <tr class="heading">
                    <td>
                        Item
                    </td>

                    <td>
                        Price
                    </td>
                </tr>
                <tr class="item">
                    <div>
                    <td>
                        <input id={{ items|length }} name="description-{{ items|length }}" required="" type="text" value="">
                    </td>
                    <td>
                        <input id={{ items|length }} name="amount-{{ items|length }}" required="" type="text" value="">
                    </td>
                        </div>
                </tr>

このエラーが発生したため、送信時のフォームがうまく機能しないようです。

sqlalchemy.exc.StatementError:(builtins.TypeError)float()引数は、 'DecimalField'ではなく文字列または数値である必要があります[SQL:INSERT INTO invoice_line_item(description、amount、invoice_id)VALUES(?、?、?)] [パラメータ:[{'description': ''、 'invoice_id':14、 'amount':<wtforms.fields.core.DecimalField object at 0x10bc52510>}]]

アイテムのデータフォームは次のとおりです。{'items':[{'description': ''、 'amount':None、 'id': ''、 'csrf_token': ''}]、 'csrf_token': 'xxxx' }しかし、テンプレートに値を入力しましたか?説明は「テスト」で、金額は23でした

このテーブルにはさらにThant1行があるので、それぞれを識別してDBに保存する必要があります

手伝ってくれてありがとう

更新:私のモデル:

class InvoiceLineItem(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  description = db.Column(db.String, nullable=False)
  amount = db.Column(db.Float, nullable=False)
  invoice_id = db.Column(db.Integer, db.ForeignKey('invoice.id'), nullable=False)

  def __init__(self, description, amount, invoice_id):
    self.description = description
    self.amount = amount
    self.invoice_id = invoice_id

私のforms.py:

class InvoiceitemForm(Form):
    description = StringField('Description', validators=[DataRequired()])
    amount = DecimalField('Amount', validators=[DataRequired()])
    id = HiddenField('id')


class InvoiceReportEntries(Form):
    items = FieldList(FormField(InvoiceitemForm), min_entries=1)
フェデリコ・バウ

簡単なアドバイスなので、wtformsのforms.pyと「Models.py」も追加する必要があります。

ハンビングは、あなたが受け取っているエラーは非常に明白であると言いました:

sqlalchemy.exc.StatementError: (builtins.TypeError) float() argument must be a string or a number, not 'DecimalField' 

何を指しているのですか?

私が言ったように、コードのいくつかのスナップが欠落しているため、理由を完全に判断できますが、エラーコードはそれ自体で説明しています:

amount': <wtforms.fields.core.DecimalField object at 0x10bc52510>

これは、クラスを呼び出しているが、クラスのインスタンスを呼び出していないためです。実際、forms.pyに「DecimalField」が含まれていると思います詳細については--_>ここを参照してください

次に、HTMLが表示されます。WTFORMSjinjaタグではなく、標準のHTMLタグ入力があります。

   <input id={{ items|length }} name="amount-{{ items|length }}" required="" type="text" value="">

したがって、これを削除して、以下を追加することをお勧めします。

 {{ form.amount.label }}
 {{ form.amount(class='yourclass') }}

required = ""の代わりに、forms.pyを追加します。

InputRequired()またはDataRequired()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

データベースから角度データテーブルへのデータのフェッチ

分類Dev

RoomデータベーステーブルへのPOJOの追加

分類Dev

テーブルへのJava検索データベース

分類Dev

データベーステーブルへのSSISフラットファイル

分類Dev

あるデータベースから別のデータベースへのAndroidSqlite転送テーブル

分類Dev

データベースへのブートストラップフォーム

分類Dev

テーブルデータベースからの動的ランダム行

分類Dev

SQLiteXamarinフォームデータベーステーブルからListViewへ

分類Dev

データベーステーブルコードへのディレクトリ更新

分類Dev

sakilaデータベーススタッフテーブル

分類Dev

別のデータベーステーブルへのLaravelサブクエリ

分類Dev

OracleXMLからデータベーステーブルへ

分類Dev

データベースから別のデータベースへのテーブルの移動-欠落している行のみを挿入します

分類Dev

データベースへのデータの保存エラー

分類Dev

データベースからデータテーブルへ、結果へのリンクを表示

分類Dev

テーブルおよびデータとしてのOracleデータベースへのテキストファイル-変換ツール

分類Dev

SQLServerデータベースからHTMLテーブルへのデータのインポート

分類Dev

Sqliteデータベースへのデータ行の挿入

分類Dev

クラスでのデータベーステーブルのロード

分類Dev

フラスコ-PythonからHTMLへのデータベースの表示

分類Dev

asp.netコア(フィルデータベース)の最初の実行時にテーブルにいくつかのデータを追加します。

分類Dev

データベーステーブルへの大きなファイルの投稿に失敗する遅いデータテーブル

分類Dev

データテーブルpythonフラスコ

分類Dev

データベーステーブル値へのリダイレクト

分類Dev

データベースへのファイルパスの保存

分類Dev

ウェブサイトテーブルからsqliteデータベースへのデータ

分類Dev

行データから列へのSQLデータベース

分類Dev

Accessフォームからデータベーステーブルへの書き込み

分類Dev

Liferayデータベーステーブルのワークフロー?

Related 関連記事

  1. 1

    データベースから角度データテーブルへのデータのフェッチ

  2. 2

    RoomデータベーステーブルへのPOJOの追加

  3. 3

    テーブルへのJava検索データベース

  4. 4

    データベーステーブルへのSSISフラットファイル

  5. 5

    あるデータベースから別のデータベースへのAndroidSqlite転送テーブル

  6. 6

    データベースへのブートストラップフォーム

  7. 7

    テーブルデータベースからの動的ランダム行

  8. 8

    SQLiteXamarinフォームデータベーステーブルからListViewへ

  9. 9

    データベーステーブルコードへのディレクトリ更新

  10. 10

    sakilaデータベーススタッフテーブル

  11. 11

    別のデータベーステーブルへのLaravelサブクエリ

  12. 12

    OracleXMLからデータベーステーブルへ

  13. 13

    データベースから別のデータベースへのテーブルの移動-欠落している行のみを挿入します

  14. 14

    データベースへのデータの保存エラー

  15. 15

    データベースからデータテーブルへ、結果へのリンクを表示

  16. 16

    テーブルおよびデータとしてのOracleデータベースへのテキストファイル-変換ツール

  17. 17

    SQLServerデータベースからHTMLテーブルへのデータのインポート

  18. 18

    Sqliteデータベースへのデータ行の挿入

  19. 19

    クラスでのデータベーステーブルのロード

  20. 20

    フラスコ-PythonからHTMLへのデータベースの表示

  21. 21

    asp.netコア(フィルデータベース)の最初の実行時にテーブルにいくつかのデータを追加します。

  22. 22

    データベーステーブルへの大きなファイルの投稿に失敗する遅いデータテーブル

  23. 23

    データテーブルpythonフラスコ

  24. 24

    データベーステーブル値へのリダイレクト

  25. 25

    データベースへのファイルパスの保存

  26. 26

    ウェブサイトテーブルからsqliteデータベースへのデータ

  27. 27

    行データから列へのSQLデータベース

  28. 28

    Accessフォームからデータベーステーブルへの書き込み

  29. 29

    Liferayデータベーステーブルのワークフロー?

ホットタグ

アーカイブ