1

WTForms と GAE (python) データストアを使用しています。CRUD の目的でフォームにキー値を渡そうとしていますが、キーではなくオブジェクトを文字列として送信しています。HTML出力行は次のとおりです。

<td> <input id="ts_list-0-key" name="ts_list-0-key" type="hidden" value="&lt;bound method TransactionSchedule.key of &lt;main.TransactionSchedule object at 0x04F19070&gt;&gt;"> </td>

他のすべてのフィールドは正しく設定されています。

その他の情報: FormField と FieldList を一緒に使用して、複数のサブフォームを繰り返しています。サブフォームに入力するには、append_entry() を使用しています。

for ts in tslist:
    form.ts_list.append_entry(ts)

この情報はどこにも見つからないようですが、私は下手な Google 社員かもしれません。

私はもう試した:

- テンプレート (jinja2) でキーを文字列に変換するが、うまくいかないようだ

__str__- 値を文字列として返す db.Model クラスで aとメソッドを作成し__unicode__ていますが、許可されていない場所を読んだと思います:/

どんな助けでも素晴らしいでしょう!

コードをもっと見る必要がある場合はお知らせください。ありがとうございます。

4

3 に答える 3

1

NDB の ts.key または db の ts.key() 私のように記憶力が悪い場合は、チート シートを使用してください。

チートシートへのリンク

于 2013-02-12T11:29:05.567 に答える
1

これ以上コードを見ずに言うのは難しいですが、コードのどこかに(のインスタンスであるとts.key仮定して) 行に沿って何かがあるように見えます。は実際にはメソッド (プロパティではない) であるため、代わりに as を呼び出す必要があります。tsTransactionSchedulekeyts.key()

たとえば、1 つのメソッドを持つ単純なクラスを次に示しますmy_printvalueこれを (メソッドとして呼び出すのではなく) プロパティとして参照すると、上記の属性と同様の出力が返されることに注意してください。

>>> class MyClass(object):
...     def __init__(self, a):
...         self.a = a
...     def my_print(self):
...         print self.a
... 
>>> c = MyClass('hello')
>>> c.my_print
<bound method MyClass.my_print of <__main__.MyClass object at 0x7f11c16791d0>>
>>> c.my_print()
hello
于 2013-02-12T08:55:40.283 に答える
0

返信ありがとうございます。

この問題は、RocketDonkey が示唆したようにdb.keyvsに関係していました。db.key()

私がやったことはこれでした:

        for ts in tslist:
            ts_key = str(ts.key())
            form.ts_list.append_entry(ts)
            form.ts_list[-1].key.data = ts_key

おそらくもっと良い方法がありますが、うまくいきました。を使用して、キーをフィールドのデフォルト値として設定できる場合があります。str(db.key())

于 2013-02-20T23:58:35.027 に答える