i'm trying to edit order in a listView through get_queryset() funcion and using order_by() when i try print generated query it's ignore order_by query and uses only the default order in Meta class inside my model class Do you know why that appens? Here my view.py file
class TagsListView(ListView):
model = Tag
paginate_by = 250
ordering = ['-tag']
def get_queryset(self):
queryset = Tag.objects.all()
queryset.order_by('slug', )
# se presente type nell'url aggiunge il filtro
category = self.request.GET.get("category", None)
# type = self.kwargs.get('type', None)
if category :
queryset = queryset.filter( category=category )
search = self.request.GET.get("search", None)
if search :
queryset = queryset.filter( tag__icontains=search )
print('test ordering')
queryset.order_by('slug', 'tag', 'date' )
print(queryset.query.__str__())
return queryset #aggiustare l'url
that is my model file
# Create your models here.
class Tag(models.Model):
GENERIC = 0
CONSOL = 1
SOCIETA = 2
SAGA = 3
CAT = 4
ALTRO = 5
CATEGORIES = [
(GENERIC,'Generico'),
(CONSOL,'Consol'),
(SOCIETA,'Sport'),
(SAGA,'Salute'),
(CAT,'Categorie'),
(ALTRO,'Tempo Libero'),
]
tag = models.CharField(max_length=40, unique=True)
slug = models.SlugField(max_length=40, unique=True)
date = models.DateTimeField(default=timezone.now)
category = models.IntegerField(choices=CATEGORIES, blank=True, default=GENERIC)
custom = models.CharField(max_length=20, blank=True)
class Meta:
ordering = ('-date', 'tag') #ordinamento degli elementi
pass
def __str__(self): #metodo righiesto
return self.tag + " - " + self.slug
def get_absolute_url(self):
return reverse("tags:tag-detail", args=[self.slug,]) #article-deatil preso da urls.py
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.slug = slugify(self.tag, allow_unicode=True)
pass
inside console log i got that sql print
SELECT `tags_tag`.`id`, `tags_tag`.`tag`, `tags_tag`.`slug`, `tags_tag`.`date`, `tags_tag`.`category`, `tags_tag`.`custom` FROM `tags_tag` ORDER BY `tags_tag`.`date` DESC, `tags_tag`.`tag` ASC
instead of
SELECT `tags_tag`.`id`, `tags_tag`.`tag`, `tags_tag`.`slug`, `tags_tag`.`date`, `tags_tag`.`category`, `tags_tag`.`custom` FROM `tags_tag` ORDER BY `tags_tag`.`slug` ASC, `tags_tag`.`tag` ASC, `tags_tag`.`date` ASC