2017-03-15 15 views
0

によってフィルタ私は、これらの属性を持つモデルがあります:私のadmin.pyDjangoの管理、タイムスタンプの範囲

class MyModel(models.Model): 
    name = models.CharField(max_length=250, blank=False, null=False) 
    timestamp = models.BigIntegerField(default=0) 

    def save(self, *args, **kwargs): 
     self.timestamp = get_timestamp_in_milli() 
     super(MyModel, self).save(*args, **kwargs) 

を、私はこのモデルでAdminModelを宣言している:

@admin.register(MyModel) 
class MyModelAdmin(admin.ModelAdmin): 
    pass 

は、フィルタのような任意のカレンダーがあり、タイムスタンプの範囲をフィルタリングできますか?はいの場合、それをどのように含めるか?

DateFieldに基づくフィルタがあることがわかりました。タイムスタンプをDateFiledとしてフィルタリングすることは可能ですか?

+0

['TimeField'](https://docs.djangoproject.com/en/1.10/ref/models/fields/#timefield)を持っているときにタイムスタンプに' BigIntegerField'を使う理由は何ですか? –

+0

'TimeField'のデフォルトのウィジェットは[' TimeInput'](https://docs.djangoproject.com/ja/1.10/ref/forms/widgets/#django.forms.TimeInput)です。これはあなたが探しているかもしれませんために? –

+0

@AshishNitinPatilは、私が使用できるフィールドの種類を決めることができないと言うことができます:) –

答えて

0

通常の方法(つまり、<input type="date" name="timestamp__lte"> <input type="date" name="timestamp__gte">)をクライアントから取得し、サーバーで変換する必要があります(脇の下:__range=[timestamp__lte, timestamp__gte])。 Here's a good post

+0

ここでコードのこの部分を記述する必要がありますか。私はちょうどdjangoの新しいです。 –

+0

['__range'](https://docs.djangoproject.com/en/1.10/ref/models/querysets/#range)は、QuerySet APIの一部です。まるで 'name__icontains =" something "'をしたように、単なるフィルタです。これらはフィールドで使用できる「魔法の」フィルタです(タイプによって異なります)。 ''はフォーム経由で提出する必要があります。そして、 'MyModel.objects.get(timestamp__range = [timestamp__lte、timestamp__gte])'のようにします。ここで、リストはPOST(またはGET)の値です。 – RompePC