Commit 8b2c1ac0 authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

Added tests for m2m queries with custom pk on the end models

It seems this case was fixed somewhere between 1.5.x and 1.6.x. I added
tests as I wasn't able to find any tests for these cases. Refs #21879
parent 0ca64735
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -258,6 +258,12 @@ class CustomPk(models.Model):
class Related(models.Model):
    custom = models.ForeignKey(CustomPk)


class CustomPkTag(models.Model):
    id = models.CharField(max_length=20, primary_key=True)
    custom_pk = models.ManyToManyField(CustomPk)
    tag = models.CharField(max_length=20)

# An inter-related setup with a model subclass that has a nullable
# path to another model, and a return path from that model.

+14 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ from .models import (
    BaseA, FK1, Identifier, Program, Channel, Page, Paragraph, Chapter, Book,
    MyObject, Order, OrderItem, SharedConnection, Task, Staff, StaffUser,
    CategoryRelationship, Ticket21203Parent, Ticket21203Child, Person,
    Company, Employment)
    Company, Employment, CustomPk, CustomPkTag)


class BaseQuerysetTest(TestCase):
@@ -3243,3 +3243,16 @@ class ForeignKeyToBaseExcludeTests(TestCase):
            SpecialCategory.objects.filter(categoryitem__id=c1.pk),
            [sc1], lambda x: x
        )


class ReverseM2MCustomPkTests(TestCase):
    def test_ticket_21879(self):
        cpt1 = CustomPkTag.objects.create(id='cpt1', tag='cpt1')
        cp1 = CustomPk.objects.create(name='cp1', extra='extra')
        cp1.custompktag_set.add(cpt1)
        self.assertQuerysetEqual(
            CustomPk.objects.filter(custompktag=cpt1), [cp1],
            lambda x: x)
        self.assertQuerysetEqual(
            CustomPkTag.objects.filter(custom_pk=cp1), [cpt1],
            lambda x: x)