0

現在、データベースでは、日付フィールドは文字列として入力されています (例: 11/7/2009)。このフィールドを TextField から DateField に変換して、Admin Console でユーザーが手動で入力する代わりにカレンダー ビューから日付を選択できるように、models.py ファイルにとにかくありますか? おそらくその場で解析しますか?

date = models.TextField()

に変換..

date = models.DateField()
4

2 に答える 2

0

MSSQL の列を日付型に変更した後も、同じ問題が発生していました。また、バックエンドのサーバーを支援するために pyodbc を使用していることにも言及する必要がありました。私たちが行った変更は、operation.py ファイルの pyodbc コード内で行われました。タイプを除いて追加されました。

 def convert_values(self, value, field): 
    .......
  elif field and field.get_internal_type() == 'DateField':
        try:
            value = value.date() # extract date
       #ADDED THE FOLLOWING TO CATCH THE ERROR
        except AttributeError:
            value = datetime.datetime.strptime(value, '%Y-%m-%d').date() 

これを追加した後、django 管理コンソールに Calendar ウィジェットが表示されました。

于 2012-03-28T19:12:44.113 に答える
0

最善の策は、データを正しく保存し始めることです。これを行うには、テーブルを変更して、(データベースに) 日付型の新しいフィールドを追加する必要があります。charfield からの既存の日付データをこの新しいフィールドに解析し、最後にテーブルを変更して charfield を削除し、一時的な日付フィールドの名前を適切に変更します。

このプロセスは、django-south を使用して移行を管理することで簡素化できます。3 つの移行が必要です。一時フィールドを追加する schemamigration、データを変換する datamigration、古い列を削除して新しい列の名前を変更する schemamigration です。

管理画面でカスタム フォームを使用してみてください...実行時に変換を強制できるかもしれませんが、実際にはデータを正しく保存する必要があるため、これは良い考えではありません。以前に管理者でカスタム フォームを使用したことがありますが、これは使用していないため、機能するかどうかはわかりません。

于 2012-03-27T21:45:27.680 に答える