ERRORS: blog.Post: (models.E015) 'ordering' refers to the nonexistent field, related field, or lookup 'publish'. How do i fix this?

Viewed 1424

Anytime I try migrating my models. I keep getting this error:

ERRORS: blog.Post: (models.E015) 'ordering' refers to the nonexistent field, related field, or lookup 'publish'.

Here's my models file.

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User


# Create your models here.


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()
    published = 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

The lines causing the error.

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

i Would like a quick solution to this. Thanks in advance

2 Answers

Isn't a typo issue? The name of the field in your model is published but in your meta, publish

Try to change your meta to this:

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

Use "published" instead of "publish". It has to match a property/field from the model you are creating metadata for.

Related