用DateTime字段保存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。我相信我在settings.py文件中设置了正确的设置:

TIME_ZONE = 'UTC'
USE_TZ = True

那么这里的问题是什么呢?如何使Django以与created_atupdated_at相同的方式保存collection_from值?

编辑:

我注意到,当检索这个模型的值时,我会得到正确的值——所以如果collection_from字段的值等于数据库中的2016-08-22 01:00:00+02,那么在输出时,它会被转换为初始值,所以2016-08-21 23:00。所以现在问题变了——为什么created_atupdated_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)
    ...

而不是发送当前时间?

相关内容

  • 没有找到相关文章

最新更新