Python Django:将输出作为"task object(1)"而不是模型表中的实际值获取



我对django很陌生。我正在尝试创建一个简单的任务管理应用程序,并在 model.py 中创建了一个类 Taskdb。我面临的问题是,我正在获得诸如任务对象(1(之类的输出,其中包含我放入任务字段中的实际值。请查看下面的文件(model.py 和 view.py(,让我知道我哪里出错了。

Models.py

from django.db import models
from django.utils import timezone

class Taskdb(models.Model):
task = models.CharField(max_length = 30)
priority = models.CharField(max_length = 30)
completed = models.BooleanField(default=False)
time_date = models.DateTimeField(default=timezone.now)

def __str__(self):
return "%s %s"%(self.task, self.completed)

Views.py

from django.shortcuts import render, redirect
from .forms import UserRegisterForm
from .models import Taskdb

def home(request):
return render(request, 'index.html')
def task(request):
all_items = Taskdb.objects.all()
return render(request, 'task.html', {'all_items': all_items})

任务.html

{% extends 'base.html' %} {% block body %}
<h2>My Task</h2>
<h4>Welcome {{ user.username }}!</h4>
<h3>Your task list.</h3>
{% for task in all_items %}
<p>{{ task }}</p>
{% endfor %} {% endblock %}

输出:

任务.html网页的屏幕截图

管理站点: 应用的管理网站的屏幕截图

在你的 django 模型的类中,你有这个,这是正确的:

def __str__(self):
return "%s %s"%(self.task, self.completed)

这将在 Django 管理中返回您想要的任何内容(在上面的情况下,它将返回该行的"任务"和"已完成"列中的任何内容(。

但是,在上面的代码中,__str__没有足够缩进,因此它不是该模型的类的一部分。确保正确缩进它。所以,它应该看起来像这样:

class Taskdb(models.Model):
task = models.CharField(max_length = 30)
priority = models.CharField(max_length = 30)
completed = models.BooleanField(default=False)
time_date = models.DateTimeField(default=timezone.now)

def __str__(self):
return "%s %s"%(self.task, self.completed)

您还可以在模型的 Meta 类中放入其他属性,以更改它们在 Djang 管理中的显示方式。

有关更多信息:https://www.geeksforgeeks.org/customize-django-admin-interface/

最新更新