Django вычисляемое поле модели для получения количества дней за вычетом данной даты из системной даты - PullRequest
3 голосов
/ 25 мая 2020

Я пытаюсь динамически сгенерировать значение столбца, т.е. вычислить «количество дней, в течение которых спрос открыт со дня запроса спроса», я пытаюсь вычесть запрошенную дату из системной даты, чтобы получить дни непосредственно в модели django, но не Получение вывода ниже - это код модели django. Любая помощь, пожалуйста,

from django.db import models
from datetime import datetime

Demand_Id = models.CharField(max_length=10, default='BLANK')`enter code here`
Requested_Date = models.DateField(default=datetime.now)
Days_Open = models.IntegerField(default=0)

@property
def get_Days(self):
    date_format = "%Y-%m-%d"
    sysdate = datetime.strptime(str(datetime.now().date()), date_format)
    odays = (sysdate - datetime.strptime((self.Requested_Date), date_format)).days
    return self.odays

@property   
def save(self, *args, **kwargs):
    self.Days_Open = self.get_Days()
    super(Demand_Master, self).save(*args, **kwargs)

def __str__(self):
    return self.Demand_Id

Ответы [ 2 ]

1 голос
/ 25 мая 2020

Просто,

<b>from django.utils import timezone</b>


class Foo(models.Model):
    # rest of your code

    @property
    def get_Days(self):
        <b>return (timezone.now() - self.Requested_Date).days</b>
0 голосов
/ 25 мая 2020

Вы не должны создавать Days_Open поле, если оно непосредственно является производным от другого поля, поскольку это приводит к дублированию данных .

from django.utils.timezone import <b>now</b>

class MyModel(models.Model):
    demand_id = models.CharField(max_length=10, default='BLANK')
    requested_date = models.DateField(default=datetime.now)

    @property
    def days_open(self):
        return <b>(now().date()-self.request_date).days</b>

    def __str__(self):
        return self.demand_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...