class Process(models.Model):
name = models.CharField(max_length=50)
start_utc = models.TimeField(db_column='start', null=True, blank=True)
end_utc = models.TimeField(db_column='end', null=True, blank=True)
我想添加一个属性
我尝试使用@property方法,如
https://docs.djangoproject.com/en/2.1/topics/db/models/
其中,@属性在类定义中没有属性
class Process(models.Model):
name = models.CharField(max_length=50)
start_utc = models.TimeField(db_column='start', null=True, blank=True)
end_utc = models.TimeField(db_column='end', null=True, blank=True)
@property
def should_run(self):
now = dt.datetime.utcnow().time()
print(self.__str__(), now, self.start_utc, self.end_utc)
return self.start_utc < now < self.end_utc
但这样根本就没有创建列条目。
我也试着用经典的方式
class Process(models.Model):
name = models.CharField(max_length=50)
start_utc = models.TimeField(db_column='start', null=True, blank=True)
end_utc = models.TimeField(db_column='end', null=True, blank=True)
_should_run = models.BooleanField(default=False, db_column="should_run")
@property
def should_run(self):
now = dt.datetime.utcnow().time()
print(self.__str__(), now, self.start_utc, self.end_utc)
return self.start_utc < now < self.end_utc
@should_run.setter
def should_run(self, val):
self._should_run = val
如何使它能够使用从@property getter获取的值创建一个列?
编辑:
from .models import Process
class ProcessTable(tables.Table):
class Meta:
model = Process
template_name = 'django_tables2/semantic.html'
将呈现该表
from .models import Process
from .tables import ProcessTable
def index(request):
p = Process.objects.all()
context = dict(table=ProcessTable(p))
return render(request, 'processes/index.html', context)
我想得到的是一个显示4列的呈现表
name, start_utc, end_utc, should_run