簡體   English   中英

'super' object 沒有屬性 'objects' Python Django

[英]'super' object has no attribute 'objects' Python Django

您需要使用get_related_filter class 方法獲取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' object has no attribute 'objects' Python Django ,並且不返回filter

使用super(Money, self)沒有意義,原因有兩個:

  1. 此代理 object 將解析為Model ,但Model也不是它的父母有objects屬性;
  2. 即使是這種情況,您也只能訪問.objects上的.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)

__str__也應該返回一個字符串,而不是小數,所以你應該返回str(self.money) ,而不是self.money

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM