类型对象'X'没有带有django的属性'DoesNotExist'

Cos*_*tin 1 python django

我一直在收到has no attribute DoesNotExist错误.

有什么想法吗?

到目前为止我试过:

    try:
        current_report = Report.objects.get(account_profile=current_profile)
    except Report.DoesNotExist:
        print("report doesn't exist")
        current_report=None
Run Code Online (Sandbox Code Playgroud)

我的调试显示type object 'Report' has no attribute 'DoesNotExist' 在current_report(etc)行:

我也尝试过:

from django.core.exceptions import ObjectDoesNotExist
...
except Report.ObjectDoesNotExist: 
Run Code Online (Sandbox Code Playgroud)

try:
    Report.objects.get(account_profile=current_profile)
except Report.DoesNotExist:
    print("report doesn't exist")
    current_report=None
Run Code Online (Sandbox Code Playgroud)

try:
    Report.objects.get(account_profile=current_profile)
except ObjectDoesNotExist:
    print("report doesn't exist")
    current_report=None
Run Code Online (Sandbox Code Playgroud)

为什么类型对象'X'没有属性'DoesNotExist'?我正在使用django.

在我的Models.py中,我有:

class Report(models.Model):
    account_profile = models.ForeignKey(Profile)
    total_visitors = models.CharField(max_length=200, blank=True, null=True)
    last_week_visitors = models.CharField(max_length=200, blank=True, null=True)
    new_visitors_this_wk = models.CharField(max_length=200, blank=True, null=True)
    new_visitors_last_wk = models.CharField(max_length=200, blank=True, null=True)
    bounce_rate = models.CharField(max_length=200, blank=True, null=True)
    last_week_bounce_rate = models.CharField(max_length=200, blank=True, null=True)
    percent_new_referrals = models.CharField(max_length=100, blank=True, null=True)
    last_week_new_referrals = models.CharField(max_length=100, blank=True, null=True)
    this_week_pg_load_time = models.CharField(max_length=100, blank=True, null=True)
    last_week_pg_load_time = models.CharField(max_length=100, blank=True, null=True)
    date_created = models.DateTimeField(default=datetime.now, blank=True)
    week_number = models.CharField(max_length=10, blank=True, null=True)

    #HTML table for browsers with avg session durations less than 10 seconds
    sessions_vs_browser = models.TextField(blank=True, null=True)
    sessions_vs_country = models.TextField(blank=True, null=True)
    sessions_vs_device = models.TextField(blank=True, null=True)
    total_sessions = models.CharField(max_length=100, blank=True, null=True)
    keywords = models.ManyToManyField(Keyword)
    referrals = models.ManyToManyField(Referral)
    pages_speeds = models.ManyToManyField(PageSpeed)
    bounces = models.ManyToManyField(BouncePage)
Run Code Online (Sandbox Code Playgroud)

Muh*_*eed 8

我也面临这种行为,问题是视图名称和模型名称相同。您只需要更改视图名称。

您可以使用两种方式处理异常

  1. 模型特定异常。
  2. django.core.exceptions.ObjectDoesNotExist

try:
     Report.objects.get(account_profile=current_profile)
except Report.DoesNotExist:
     print("report doesn't exist")
     current_report=None
Run Code Online (Sandbox Code Playgroud)

或者

try:
     Report.objects.get(account_profile=current_profile)
except ObjectDoesNotExist:
     print("report doesn't exist")
     current_report=None
Run Code Online (Sandbox Code Playgroud)

不存在

异常 Model.DoesNotExist

ORM 在几个地方引发此异常,例如,当未找到给定查询参数的对象时,由 QuerySet.get() 引发。Django 提供DoesNotExist 异常作为每个模型类的属性,以标识无法找到的对象类,并允许您使用try/ except 捕获特定模型类。该异常是 django.core.exceptions.ObjectDoesNotExist 的子类。


All*_*ітy 7

导入例外,

from django.core.exceptions import ObjectDoesNotExist
Run Code Online (Sandbox Code Playgroud)

抓住它

try:
    Report.objects.get(account_profile=current_profile)
except ObjectDoesNotExist:
    print("report doesn't exist")
    current_report=None
Run Code Online (Sandbox Code Playgroud)

因为ObjectDoesNotExist是Django特定的异常,你必须导入它才能捕获它.

此外,它不是模型的属性 Model.ObjectDoesNotExist