I can not order my News table. I guess i did everything right but django shows me error! Please check my code maybe something went wrong
class News(models.Model):
news_title = models.CharField(max_length=255)
news_text = models.TextField(max_length=1000)
news_logo = models.ImageField(upload_to='uimages')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = 'News'
verbose_name_plural = 'News'
**News.objects.filter().order_by('-created_at')**
There are some indentation problems in your code, or at least in the example you posted. The code snippet should be indented as follows:
class News(models.Model):
news_title = models.CharField(max_length=255)
news_text = models.TextField(max_length=1000)
news_logo = models.ImageField(upload_to='uimages')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = 'News'
verbose_name_plural = 'News'
Specifically, the Meta
class needs to be part of the News
class.
In terms of changing the default ordering, as in some of the comments already pointed out, the correct way to do this is to use the ordering
attribute inside the Meta
class. If you always want to order by created_at
in descending order, you'd need to define the classes as following:
class News(models.Model):
news_title = models.CharField(max_length=255)
news_text = models.TextField(max_length=1000)
news_logo = models.ImageField(upload_to='uimages')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = 'News'
verbose_name_plural = 'News'
ordering = ['-created_at']
You can find more information about model options in the Django documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With