0

まず第一に、Dexterity Content Types 2.0.7 で Plonce Plone 4.3 (4305) インスタンスを実行しています。

私のアプローチは、Python スクリプト (ZMI 経由で追加) を作成することです。このスクリプトは、メソッドを使用して、invokeFactory(...)またはtypestool.constructContent(..)ここで説明されている、器用さのコンテンツ タイプを作成します: http://plone.org/documentation/kb/add-content-programmatically (私は 2 つのスクリプトを作成しました)同じタスクを実行しますが、異なる方法を使用します - 学習目的のため)

上記の両方のメソッドのコンストラクターに DateTime オブジェクトを追加してコンテンツ タイプを作成しようとする場合を除いて、すべて正常に動作しています。日付フィールドは奇妙に日と年の値のみを更新します。Python内でライブラリをインポートする際の制限のため、私は(私の現在の知識では)このコードで立ち往生しています:

d = DateTime('12/12/2013')

私のスクリプトは、完了後に次のような日付オブジェクトを返します。

2013/12/12 00:00:00 GMT+1

作成後に Date 値を出力する別の小さなスクリプトを作成しましたが、同じ結果が得られます (これは正しいようです)。結果のコンテンツ タイプでは、日と年のフィールドが正しく更新されますが、月の値は 1 月のままで、表示時に次の TypeError が発生します。

TypeError: int() argument must be a string or a number, not 'instancemethod'

月の値を手動で編集することでこれを修正できますが、これはまさに私が望むものではありません。私の DateTime オブジェクトの小さな問題だと思いますが、現時点ではアイデアが不足しています (全体的なドキュメントは少し散らばっているようです)。DateTime コンストラクター内でさまざまな日付形式を試しましたが、うまくいきませんでした。

オブジェクトのカスタム フィールド値を変更する方法もわかりません。Plone はsetTitle()andsetDescription()メソッドのみを提供しているようです。誰かが良いヒントを持っているかもしれません。

よろしくお願いします。

4

2 に答える 2

0

AFAIK、問題は、器用さタイプの DateTime フィールドには DateTime オブジェクトではなく、datetime オブジェクトが必要であることです。

invokeFactory では、DateTime オブジェクトの代わりに datetime オブジェクトを渡す必要があります。

>>>date=datetime.datetime(2011,1,1)
>>>myobj=target.invokeFactory(type_name="content_type_name", id=id, date=date)

>>from DateTime import DateTime
>>DateTime().month() 
7
>>from datetime import datetime
>>datetime.now().month
7
>>datetime.now().month()
TypeError: 'int' object is not callable 

>>> myobj.date
datetime.datetime(2013, 7, 26, 0, 0) 
>>> myobj.date.month 
7
>>> myobj.date.month() 
TypeError: 'int' object is not callable 
于 2013-07-29T12:20:38.453 に答える