2016-08-21 9 views
1

モデル:保存Djangoのモデル

class Meal(models.Model): 
    created_at = models.DateTimeField(auto_now_add=True) 
    updated_at = models.DateTimeField(auto_now=True) 
    collection_from = models.DateTimeField(blank=False, null=False) 
    discount_price = models.DecimalField(blank=False, null=False, decimal_places=2, max_digits=4) 
    normal_price = models.DecimalField(blank=True, null=True, decimal_places=2, max_digits=4) 
    available_count = models.IntegerField(blank=False, null=False) 
    name = models.CharField(blank=False, null=False, max_length=255) 
    active = models.BooleanField(blank=False, null=False, default=True) 

さて、私は例えば、created_atupdated_at値が正しく設定されていることのインスタンスを保存していたとき:2016-08-21 13:13:57.585472+02collection_fromの値は前の2つの値とほぼ同じですが、次の日を指すように設定されています。例えば、私は全く得られない2016-08-22 01:00:00+02です。 collection_fromの値は、ブラウザによって送信されるときのようになります。2016-08-21 23:00。だから何がここでの問題だ

TIME_ZONE = 'UTC' 

USE_TZ = True 

:私はsettings.pyファイルをintセットアップ適切な設定を持っていると信じて? Djangoでを保存する方法は、created_atまたはupdated_atと同じですか?

EDIT:

私は、このモデルの値を取得するときに、私は正しいものを得ることに気づいた - ので、私collection_fromフィールドの値が、それはだ出力に、データベース内2016-08-22 01:00:00+02と等しい場合最初の値に変換されているので、2016-08-21 23:00です。だから今質問が変わります - created_atupdated_atフィールドとこれの違いはなぜですか?

EDIT2:

私は(私はcollection_from値を供給する方法を十分に説明するように)それが必要になると思いませんでしたが、ここではPOSTリクエストのボディです:

[{"collection_from":"2016-08-21 23:00","discount_price" 
:"10","normal_price":"20","available_count":"4","name":"pizza"}] 

そして、

class MealsCrudView(CreateAPIView): 
    serializer_class = MealSerializer 

シリアライザ:

をDRFは、それを保存見ます10
class MealSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Meal 
+0

どのように 'collection_from'に値を保存していますか? 'collection_from'で作業している場所の完全なコードを表示してください。 –

+0

私はそれのための特別なコードを持っていません。 Djangoは保存を処理します。 –

+0

'collection_from'には' auto_now_add'や 'auto_now'がありません。つまり、そのフィールドに値を指定する必要があります。自動的に値を設定することはできません。オブジェクトのインスタンスを作成し、この値を割り当てるコードを表示する必要があります。 – solarissmoke

答えて

-1

あなたがしようとしました:

from django.utils import timezone 

class Meal(models.Model): 
    ... 
    collection_from = models.DateTimeField(default=timezone.now) 
    ... 

の代わりに送信する現在の時刻を?

+0

あなたがダウンボートする場合は、メモを残してください。 – turkus

関連する問題