Я получаю странную ошибку при попытке мигрировать в Django - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь создать приложение todo в Django. Все шло хорошо, пока я не получил следующую ошибку:

: (admin.E108) Значение 'list_display [2]' относится к 'due_date', который не вызывается, атрибуту 'TodoListAdmin' или атрибут или метод в 'todolist.TodoList'.

Файл моделей:

from django.db import models
from django.utils import timezone
# Create your models here.

class Category(models.Model): #The Category table name that inherits models.Model
    name = models.CharField(max_length=100)#Like a varchar

    class Meta:
        verbose_name = ("Category")
        verbose_name_plural = ("Categories")

    def __str__(self):
        return self.name #name to be shown when called(Whatever tf that means)

class TodoList(models.Model): #Todolist able that inherits models.Model
    title = models.CharField(max_length=250) #This is apparently a varchar
    content = models.TextField(blank=True) #A text field
    created = models.DateField(default=timezone.now().strftime("%Y-%m-%d")) #Presents a date.
    category = models.ForeignKey(Category, on_delete=models.PROTECT, default="general") #A foreignkey.

    class Meta:
        ordering = ["-created"] #ordering by the created field.

    def __str__(self):
        return self.title #Name to be sown when called.

Файл администратора:

from django.contrib import admin
from . import models
# Register your models here.
class TodoListAdmin(admin.ModelAdmin):
    list_display = ("title", "created", "due_Date")

class CategoryAdmin(admin.ModelAdmin):
    list_display = ("name",)

admin.site.register(models.TodoList, TodoListAdmin)
admin.site.register(models.Category, CategoryAdmin)

Файл просмотров:

from django.shortcuts import render,redirect
from .models import TodoList, Category
# Create your views here.
def index(request): #the index-view.
    todos = TodoList.objects.all() # querying all todos with the object manager.
    categories = Category.objects.all()#Gets all categories, using the object-manager.
    if request.method == "POST": #Checks if the request-method is a POST
        if "taskAdd" in request.POST: #Checks if there is a request to add a todo
            title = request.POST["description"] #Title
            date = str(request.POST["date"]) #date
            category = request.POST["category_select"] #category
            content = title + "--" + date + "" + category #Adds the previously defined variables together to form the content-variable.
            Todo = TodoList(title=title, content=content, due_date=date, category=Category.objects.get(nae=category))
            Todo.save() #saving the todo
            return redirect("/") #Reloads the page

        if "taskDelete" in request.POST: #Checks if there is a request to delete a todo.
            checklist = request.POST["checkedbox"] #checked todos to be deleted.
            for todo_id in checkedlist:
                todo = TodoList.objects.get(id=int(todo_id)) #gets id of todo.
                todo.delete() #deletes the todo in question.
        return render(request, "index.html", {"todos" : todos, "categories":categories})

На самом деле я не знаю, имеет ли какое-либо из них отношение, поэтому, пожалуйста, дайте мне знать, если есть что-то еще, что вам может понадобиться знать. Как вы, вероятно, можете сказать, я довольно новичок как в Django, так и на этом сайте. Заранее спасибо.

1 Ответ

1 голос
/ 01 февраля 2020

В вашей модели TodoList у вас нет поля due_Date, поэтому вы получаете эту ошибку: значение 'list_display [2]' относится к 'due_date', которое не вызывается. list_display в admin принимает только имя поля вашей модели. Я не знаю, почему вы используете due_date, которого нет в вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...