1

UnixTimestampFieldというクラスがあります。

from django.db import models
from datetime import datetime
from time import strftime

class UnixTimestampField(models.DateTimeField):
    op_params=''
    def __init__(self, null=False, blank=False, op_params='', **kwargs):
        super(UnixTimestampField, self).__init__(**kwargs)
        self.blank, self.isnull = blank, null
        self.null = True

    def db_type(self, connection):
        typ=['TIMESTAMP']
        # See above!
        if self.isnull:
            typ += ['NULL']
        if self.op_params != '':
            typ += [self.op_params]
        return ' '.join(typ)

    def to_python(self, value):
        return datetime.from_timestamp(value)

    def get_db_prep_value(self, value, connection, prepared=False):
        if value==None:
            return None
        return strftime('%Y%m%d%H%M%S',value.timetuple())

    def to_python(self, value):
        return value

from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^web\customfields\.unixtimestampfield\.UnixTimestampField"])

次のコマンドを実行するたびに:python manage.py schemamigration web --initial、取得し続けます:

! (this field has class web.customfields.unixtimestampfield.UnixTimestampField)

足りないものはありますか?フィールドが存在することさえ認識していないようですか?私は次の場所でドキュメントを読んでいました:

http://south.readthedocs.org/en/latest/customfields.html#extending-introspection

http://south.readthedocs.org/en/latest/tutorial/part4.html#keyword-arguments

[解決]

エラーは単純なものでした。

次の行: ^web\customfields\.unixtimestampfield\.UnixTimestampFieldが正しくありません。

次のように変更されました。 ^web\.customfields\.unixtimestampfield\.UnixTimestampField

4

1 に答える 1

1

これはおいしいです。ただし、モデルのUnixTimestampFieldをDateTimeFieldに変更できます。これを実行します:

python manage.py schemamigration web --initial

また、別の時間を変更した後、DateTimeFieldをUnixTimestampFieldに変更します

これは機能する必要があります....しかし、これは汚い解決策です

コードにエラーがある可能性はありますが、次のように変更してください。

add_introspection_rules([], ["^web\customfields\.unixtimestampfield\.UnixTimestampField"])

このため:

add_introspection_rules([], ["^web\.customfields\.unixtimestampfield\.UnixTimestampField"])
于 2012-08-08T17:34:24.760 に答える