';超级';对象没有属性';对象';Python Django
您需要使用';超级';对象没有属性';对象';Python Django,python,django,Python,Django,您需要使用get\u related\u filter类方法获取filter 视图 modelPath = 'Money.models' app_model = importlib.import_module(modelPath) cls = getattr(app_model, 'Money') related_result = cls().get_related_filter(search_query='search_query') 型号.py class Money(models.Mod
get\u related\u filter
类方法获取filter
视图
modelPath = 'Money.models'
app_model = importlib.import_module(modelPath)
cls = getattr(app_model, 'Money')
related_result = cls().get_related_filter(search_query='search_query')
型号.py
class Money(models.Model):
money = models.DecimalField(max_digits=19, blank=True, default=0, decimal_places=2)
def get_related_filter(self, **kwargs):
results = super(Money, self).objects.filter(Q(money__icontains=kwargs['search_query']))
return results
def __str__(self):
return self.money
为什么给
“super”对象没有属性“objects”Python Django
,并且不返回filter
使用super(Money,self)
没有意义,原因有二:
模型
,但模型
或其父对象具有对象
属性;及.objects
,而不能访问实例class Money(models.Model):
money = models.DecimalField(max_digits=19, blank=True, default=0, decimal_places=2)
def get_related_filter(self, search_query, **kwargs):
return Money.objects.filter(money__icontains=search_query)
def __str__(self):
return str(self.money)
class Money(models.Model):
money=models.DecimalField(最大位数=19,空格=True,默认值=0,小数位数=2)
def get_相关过滤器(自我、搜索查询、**kwargs):
返回Money.objects.filter(Money\u icontains=search\u query)
定义(自我):
返回str(self.money)
\uuuu str\uuuuu
也应该返回字符串,而不是十进制,因此您应该返回str(self.money)
,而不是self.money为什么不直接使用money.objects.filter(…)
。该错误意味着Money
的超类,Model
没有对象
。models.Money类是否具有名为“objects”的属性?我猜不是。@NicholasHunter:是的,因为只要您不指定其他管理器,Model
(ModelBase
)的元类将填充该类。