Ily*_*bik 7 django django-models django-filter
我正在使用Django Filters包.
我在视图中以下列方式定义了我的过滤器
class UnitFilter(django_filters.FilterSet):
class Meta:
model = Unit
fields = [
'floor', 'number', 'building','lease','leaseterm',
'lease__is_active','lease__is_terminated','lease__is_renewed',]
Run Code Online (Sandbox Code Playgroud)
我过滤的我的单位模型如下
class Unit(CommonInfo):
version = IntegerVersionField( )
number = models.CharField(max_length=30,null=True, blank=True)
max_occupants = models.PositiveSmallIntegerField()
floor = models.PositiveSmallIntegerField()
rooms = models.PositiveSmallIntegerField()
is_disabled_access = models.BooleanField(default=False)
balcony_quantity = models.PositiveSmallIntegerField()
building = models.ForeignKey(Building)
recomended_price = models.DecimalField(max_digits=7, decimal_places=2)
_lease = None
_leaseterm = None
#check = models.ManyToManyField(UnitCheck, through='UnitChecklist')
def _get_total(self):
from conditions.models import LeaseTerm
from lease.models import Lease
lease_dict = Lease.objects.filter(unit_id=self.id, is_active = True , is_terminated = False).aggregate(Max('id'))
if lease_dict['id__max']:
lease = lease_dict['id__max']
else:
lease = 0
leaseterm_dict = LeaseTerm.objects.filter(lease_id=lease, is_active = True , is_terminated = False).aggregate(Max('id'))
if leaseterm_dict['id__max']:
leaseterm = leaseterm_dict['id__max']
else:
leaseterm = 0
self._lease = lease
self._leaseterm = leaseterm
@property
def lease(self):
if self._lease is None:
self._get_total()
return self._lease
@property
def leaseterm(self):
if self._leaseterm is None:
self._get_total()
return self._leaseterm
Run Code Online (Sandbox Code Playgroud)
此模型租约和租约中有2个计算属性
当leaseterm给我这个错误时,lease属性没有问题
Meta.fields包含一个未在此FilterSet上定义的字段:leaseterm
为什么?它是django-filter中的一个错误?有什么解决方法吗?
| 归档时间: |
|
| 查看次数: |
5803 次 |
| 最近记录: |