在我的模型文件中,我有额外的课程。
具有根据其他模型LeaseExtra
计算租约的物业租赁class Extra(CommonInfo):
number = models.CharField(max_length=30,null=True, blank=True)
max_occupants = models.PositiveSmallIntegerField()
floor = models.PositiveSmallIntegerField()
_lease = None
def _get_total(self):
from lease.models import Lease
from conditions.models import LeaseExtra
le_dict = LeaseExtra.objects.filter(extra_id=self.id, is_active = True ).aggregate(Max('id'))
if le_dict:
lease = le_dict.lease
else:
lease = 0
self._lease = lease
class LeaseExtra(CommonInfo):
version = IntegerVersionField( )
extra = models.ForeignKey(Extra,on_delete=models.PROTECT)
lease = models.ForeignKey(Lease,on_delete=models.PROTECT)
is_included = models.BooleanField(default=True)
为什么我在这个模型类中遇到错误?
例外值:
'dict'对象没有属性'lease'
Traceback:
File "C:\Users\PAPA\DEV\rent_unit\rent_unit_venv\lib\site-packages\django\core\handlers\base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\PAPA\DEV\rent_unit\rent_unit_venv\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "C:\Users\PAPA\DEV\rent_unit\src\unit\views.py" in extra_available_list
163. extra_list = [obj for obj in extra_list if ( (obj.lease)==0)]
File "C:\Users\PAPA\DEV\rent_unit\src\unit\models.py" in lease
182. self._get_total()
File "C:\Users\PAPA\DEV\rent_unit\src\unit\models.py" in _get_total
160. lease = le_dict.lease
Exception Type: AttributeError at /unit/list/extra/available/
Exception Value: 'dict' object has no attribute 'lease'
答案 0 :(得分:1)
le_dict被初始化为一个查询集。即它不是单个对象实例。
因此,引用'lease'属性是没有意义的,因为可能已经返回了许多LeaseExtra实例的查询集。
如果要引用特定模型实例的“租约”,可以执行以下操作:
le_dict = LeaseExtra.objects.get(pk=some_id)
get()方法要求您使用唯一标识符(如主键)来执行查询。