2016-08-21 93 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的價值應該幾乎與前兩個相同,但它已被設置爲指向第二天,例如:2016-08-22 01:00:00+02,我根本不明白:)。值爲collection_from的值看起來像由瀏覽器發送時的值:2016-08-21 23:00。我相信我有正確的設置來設置的int settings.py文件:

TIME_ZONE = 'UTC' 

USE_TZ = True 

所以這裏有什麼問題嗎?如何讓Django保存collection_from的價值與created_atupdated_at相同?

編輯:

我注意到,當檢索到該模型的價值觀,我得到正確的 - 所以,如果我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"}] 

而且在DRF視圖保存它:

class MealsCrudView(CreateAPIView): 
    serializer_class = MealSerializer 

和串行:

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

相關問題