13

私のDjangoモデルには「updatedOn」という名前の日時フィールドがあります。このモデルでライブラリ関数を使用して統計を計算する必要がありますが、関数は日時フィールド名が「時間」であると想定しています。関数が日時を使用する方法は次のとおりです。

c = qset.filter(time__year=tt.year, time__month=tt.month, time__day=tt.day).count();

ライブラリコードに触れずに、「updatedOn」フィールドを参照するエイリアス「time」を作成して、関数を使用できるようにするにはどうすればよいですか?

4

4 に答える 4

6

これについてはあまり詳しく調べていませんが、直感的には、次の方法のいくつかから始めることができます。

カスタムマネージャー

をフィルタリングするときに探すメソッドが変更されたカスタム マネージャget_querysetupdatedOntime

カスタム フィールド タイプ

別のフィールドへの参照としてのみ機能するカスタム フィールド タイプを作成できる場合があります。

model._meta.fields のハッキング

モデルオブジェクト_meta.fieldsには、そのオブジェクトのフィールドのリストが含まれているようです。timeおそらく、フィールドを参照すると呼ばれるダミーフィールドを追加してみてくださいupdatedOn

于 2013-09-24T17:02:30.523 に答える
3

モデルでフィールドのプロパティを作成します。

class MyModel(moels.Model):
    updated_on = models.DateTimeField()

    def _get_time(self):
        return self.updated_on
    time = property(_get_time)
于 2013-09-24T15:47:41.590 に答える