博客。帖子:(模型。E014)"排序"必须是元组或列表(即使您只想按一个字段排序)。在姜戈



我正在为我的django博客应用程序制作模型。但在运行python manage.py makemigrations blog时,我收到了以下错误消息:

SystemCheckError: System check identified some issues:
ERRORS:
blog.Post: (models.E014) 'ordering' must be a tuple or list (even if you want to order by only one field).

这是我的models.py文件:

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class Post(models.Model):
STATUS_CHOICES = (
('draft','Draft'),
('published','Published')
)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250,unique_for_date='publish')
author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='blog_posts')
body = models.TextField()
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=10,choices=STATUS_CHOICES,default='draft')
class Meta:
ordering = ('-publish')
def __str__(self):
return self.title

错误表明我的排序应该是一个列表或元组。但事实已经如此。我不能理解这个错误。有人能帮帮我吗?提前感谢

试试这个:

ordering = ('-publish',)

您必须更改此项:

class Meta:
ordering = ('-publish')

转换为:

class Meta:
ordering = ('-publish',)

注意1-publish后添加的逗号

注意2:在python中,(1(只是一个数字,但(1,(是一个tuple

在我的例子中,它需要一个元组,而该元组必须包含逗号,即使你只分析其中的一个项目,减号意味着你想从最新的元组中排序。

class Meta:
ordering = ('-name',)

只有一个值在括号的末尾没有逗号"((">不被识别为元组

所以,这个代码是:

ordering = ('-publish') # Is not Tuple

与此代码相同:

ordering = '-publish' # Is not Tuple

因此,末尾需要一个逗号才能识别为元组

ordering = ('-publish',) # Is Tuple

此外,括号中末尾有逗号和没有逗号的多个值"((">都被识别为元组

ordering = ('-publish', '-created', '-updated') # Is Tuple
ordering = ('-publish', '-created', '-updated',) # Is Tuple

此外,没有括号中没有逗号的值"((">被识别为元组

ordering = () # Is Tuple

但是没有括号中有逗号的值";((">得到错误:

ordering = (,) # Error

相关内容

最新更新