Поле DateTimeField в Django является None в сериализаторе
Я использую DRF и у меня есть модель Bid, у меня есть DateTimeField у которого есть auto_now_add
и когда я отправляю данные из Postman соответственно я не отправляю время. и затем я хочу подтвердить это время в функции сериализатора validate
но когда я вызываю это время, оно None. что я могу сделать, чтобы получить время в сериализаторе?
я отправляю данные следующим образом
{
"user": 12,
"product": 5
}
вот мой код ->
class Bid(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=_('მომხმარებელი'))
product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_('პროდუქტი'))
price = models.IntegerField(default=0)
time = models.DateTimeField(auto_now_add=True, verbose_name=_('დრო'))
def __str__(self):
return self.product.name
def save(self, *args, **kwargs):
if self.price == 0:
self.product.current_price += 1
self.product.save()
self.price = self.product.current_price
else:
self.product.current_price += self.price
self.product.save()
super(Bid, self).save(*args, **kwargs)
view
class BidView(generics.ListCreateAPIView):
serializer_class = BidSerializer
queryset = Bid.objects.all()
def post(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
сериализатор
class BidSerializer(serializers.ModelSerializer):
class Meta:
model = Bid
fields = '__all__'
def validate(self, data):
all_bids = Bid.objects.filter(product=data.get('product').id).last()
print(data.get('time')) <--- this is None
if data.get('price'):
if data.get('product').current_price > data.get('price'):
raise ValidationError({"price_error": "შენი შეთავაზება მიმდინარე ფასზე ნაკლებია"})
return data
Здесь атрибут auto_now_add
предназначен только для модели при сохранении. Он не имеет никакого отношения к сериализатору.
Когда поле установлено в значение auto_now_add
, сериализатор не проверяет, есть ли поле в полезной нагрузке JSON, поскольку оно будет сохранено автоматически.