Джанго: Как добавить 2 дня к существующей дате, введенной пользователем - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь добавить дату платежа через 2 дня после события

class Payment(models.Model):       
    event_date = models.DateField()        
    payment_due_date = models.DateField()    


    class Meta:
        ordering = ["payment_due_date"]

    def payment_due_date(self):
         event_date = self.event_date
         return event_date + datetime.timedelta(days=2)

Pycharm выдает ошибку, подсвечивая Expected type 'timedelta', got 'DateField' instead more... (Ctrl+F1)

как я могуисправить эту проблему

Ошибка в терминале

match = date_re.match (значение) TypeError: ожидаемая строка или байтовоподобный объект

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете переопределить свой метод save() в своей модели.

Обратите внимание , что DateTimeField в Django становится объектом datetime.datetime.Таким образом, чтобы извлечь из него дату, вам нужно позвонить field.date().

Пример:

models.py

from django.db import models
import datetime

class Payment(models.Model):
    event_date = models.DateField()
    payment_due_date = models.DateField()

    class Meta:
        ordering = ["payment_due_date"]

    def save(self, *args, **kwargs):
        if self.payment_due_date is None:
            self.payment_due_date = self.event_date.date() + datetime.timedelta(days=2)
        super(Payment, self).save(*args, **kwargs)
...