型号:
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_at
和updated_at
值设置正确,例如:2016-08-21 13:13:57.585472+02
。collection_from
值应该与前两个值几乎相同,但它被设置为指向第二天,例如:2016-08-22 01:00:00+02
,我根本不知道:(。collection_from
的值在浏览器发送时是这样的:2016-08-21 23:00
。我相信我在settings.py
文件中设置了正确的设置:
TIME_ZONE = 'UTC'
USE_TZ = True
那么这里的问题是什么呢?如何使Django以与created_at
或updated_at
相同的方式保存collection_from
值?
编辑:
我注意到,当检索这个模型的值时,我会得到正确的值——所以如果collection_from
字段的值等于数据库中的2016-08-22 01:00:00+02
,那么在输出时,它会被转换为初始值,所以2016-08-21 23:00
。所以现在问题变了——为什么created_at
和updated_at
字段与这个字段有区别?
第2版:
我不认为这是必要的(正如我很好地描述了我如何提供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
你尝试过吗:
from django.utils import timezone
class Meal(models.Model):
...
collection_from = models.DateTimeField(default=timezone.now)
...
而不是发送当前时间?