PythonDjango:将输出作为“任务对象(1)”而不是模型表中的实际值

2024-09-29 20:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我对django很陌生。我正在尝试创建一个简单的任务管理应用程序,并在model.py中创建了一个类Taskdb。我所面临的问题是,我得到的输出像task object(1)一样,是我在task字段中输入的实际值。请查看我下面的文件(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})

task.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 %}

输出:

Screen shot of Task.html web page

管理站点: Screen shot of admin site of the app


Tags: djangofrompyimportselftaskreturnmodels
1条回答
网友
1楼 · 发布于 2024-09-29 20:30:33

在django模型的类中,您有以下内容,这是正确的:

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

这将在Django admin中返回您想要的任何内容(在上面的例子中,它将返回该行的任务和已完成列中的任何内容)

但是,在上面的代码中,__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)

您还可以将其他属性放入模型的元类中,以更改它们在Djang admin中的显示方式

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

相关问题 更多 >

    热门问题