Opened 3 years ago
Closed 3 years ago
#34089 closed Bug (duplicate)
Order by foreign key is not respected when using expression as default ordering
| Reported by: | Mathieu Rampant | Owned by: | nobody |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | 3.2 |
| Severity: | Normal | Keywords: | order_by foreign_key |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
I recently switched a bunch of
ordering = ["name"]
to
ordering = [Lower("name")]
in the Meta class of some models.
Now when I order a related Model, the result is not order as it should be.
Consider the following example:
class ItemCategory(models.Model):
name = models.CharField(max_length=100)
class Meta:
ordering = [Lower("name")]
class Item(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey("ItemCategory", blank=True, null=True, on_delete=models.CASCADE)
class Meta:
ordering = [Lower("name")]
If I do Item.objects.all().order_by("category", "name") then the results are ordered by Item name only, not ItemCategory name and Item name as it should be.
Note:
See TracTickets
for help on using tickets.
Duplicate of #29538, fixed in Django 4.1 (see 2798c937deb6625a4e6a36e70d4d60ce5faac954).