类型对象“...”没有属性“对象”

时间:2021-05-11 18:04:40

标签: python-3.x django

在models.py中

from django.contrib.auth.models import AbstractUser
from django.db import models


class User(AbstractUser):
    pass

class Espresso(models.Model):
    employee = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user_esp_log")
    time = models.DateTimeField(auto_now_add=True, blank=True)
    water_temp = models.DecimalField(max_digits=3, decimal_places=1)
    water_TDS = models.DecimalField(max_digits=3, decimal_places=2)
    name = models.CharField(max_length=2, choices=ESPRESSO_TYPES, default= ESPRESSO_TYPES[0][1])
    batch_number = models.DecimalField(max_digits=4, decimal_places=0)
    dry = models.DecimalField(max_digits=4, decimal_places=2)
    wet = models.IntegerField()

    def __str__(self):
        return f"Log added on {self.time} by {self.employee}"

在 views.py 中,'create_espresso' 路由尝试创建一个新日志,如下所示:

def create_espresso(request):
if request.method == "GET":
    return render(request, "score_sheet/espresso.html", {"form": Espresso()})
else:
    form = Espresso(request.POST)
    user = User.objects.get(username=request.user)

    if form.is_valid():
        espresso = form.save(commit=False)
        espresso.employee = user
        espresso.save()
        espressos = Espresso.objects.all()
        return render(request, "score_sheet/index.html", {
            "espressos": espressos,
            "message": "Log added"
        })
    else:
        return render(request, "score_sheet/espresso.html", {"form": form})

此外,这是向视图发送的表单:

{% block body %}
<form action="{% url 'create_espresso' %}" method="POST">
    {% csrf_token %}
    {{ form.as_table }}
    <button class="btn btn-success">Log</button>
</form>
{% endblock %}

在提交表单时,Django 返回以下内容: 类型对象 'Espresso' 没有属性 'objects'

如果需要,这里是堆栈跟踪:

Internal Server Error: /create_espresso
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site- 
packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site- 
packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site- 
packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/Users/apostolospapas/coffee_log/coffeeLog/score_sheet/views.py", line 88, in 
create_espresso
espressos = Espresso.objects.all()
AttributeError: type object 'Espresso' has no attribute 'objects'

我对可能导致这种情况的原因感到困惑。 任何帮助,将不胜感激。 谢谢。

0 个答案:

没有答案