tortoise / tortoise-orm

Familiar asyncio ORM for python, built with relations in mind
https://tortoise.github.io
Apache License 2.0
4.37k stars 355 forks source link

Fix test filters todo #1619

Closed waketzheng closed 1 month ago

waketzheng commented 1 month ago

Description

Fixes TODO item in tests/test_filters.py

Motivation and Context

Django get result of: ['17', '17', '12'] But test_mysql_myisam get result of ['12', '17', '17'] So I add .order_by("id")

To reproduce Django result:

python3 -m venv venv
source venv/*/activate
pip install django
python -m django startproject haha
cd haha
python manage.py startapp foo
echo 'from django.db import models

class CharPkModel(models.Model):
    id = models.CharField(max_length=64, primary_key=True)

class CharFkRelatedModel(models.Model):
    model = models.ForeignKey(CharPkModel, related_name="children", on_delete=models.CASCADE)
' > foo/models.py
echo 'INSTALLED_APPS.append("foo")' >> haha/settings.py
python manage.py makemigrations
python manage.py migrate
python manage.py shell
from foo.models import *
objs=CharPkModel.objects.bulk_create([CharPkModel(id=i) for i in '17 12 2001'.split()])
CharFkRelatedModel.objects.bulk_create([CharFkRelatedModel(model=i) for i in (objs[0], objs[0], objs[1])])
CharPkModel.objects.filter(children__isnull=False).values_list('id', flat=True)
image

How Has This Been Tested?

make ci

Checklist: