0

私はこれを試しています:

retVal= ""
dI = models.DateField(date(year=2005, month=11, day=1))
dF = models.DateField(date(year=2005, month=11, day=6))

diff = dF - dI

retVal += diff + "message"

しかし、私はこのエラーが発生しています

サポートされていないオペランド タイプ -: 'DateField' および 'DateField'

助けてください。

4

3 に答える 3

2

あなたは非常に奇妙なことをしています。値を含まないFieldオブジェクトを定義するdjangoモデルコードがあります。インスタンスのみにフィールド値が含まれているため(クラスレベルで定義している)、実行していることはすべてクラスメソッドに入れる必要があります。

おそらく、djangoのメタクラスマジックがそれらの属性への参照をデータベースからのPython値に変換するため、混乱していますか?

class MyModel(models.Model):
    foo = models.DateField()

    print foo  # is a models.DateField

    def get_foo_after_django_magic(self):
        print self.foo  # is a datetime() instance
于 2012-11-27T07:26:06.397 に答える
0

DateFields は Python の datetime インスタンスと同じではないため、DateFields ではその操作が許可されていないため、実行しようとしている操作を実行できません。ラウナックが提供した答えは正しいです。

属性として DateField を持つモデルがある場合は、次のようにする必要があります。

my_object = MyModelWithDateField.object.get(pk=1)
diff = datetime.today - my_object.some_datefield
于 2012-11-27T07:45:43.360 に答える
-1

Datefiedlの値を差し引くことができます。

df = datetime.date(year=2005, month=11, day=1)
di = datetime.date(year=2005, month=11, day=6)

日付フィールドでアクションを直接実行することはできません

2つの日付オブジェクトを減算しようとすると、差分はタイムデルタインスタンスを返します

>>> df = datetime.date(year=2005, month=11, day=1)
>>> di = datetime.date(year=2005, month=11, day=6)
>>> di -d5
datetime.timedelta(5)
于 2012-11-27T06:59:33.990 に答える