Refs #33984 -- Added test for creating copies of model instances with inherited m2m fields.

This commit is contained in:
Mariusz Felisiak 2022-11-02 12:30:16 +01:00 committed by GitHub
parent d5bcdf858d
commit 57c2e5da71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 0 deletions

View File

@ -110,6 +110,10 @@ class Supplier(Place):
customers = models.ManyToManyField(Restaurant, related_name="provider")
class CustomSupplier(Supplier):
pass
class ParkingLot(Place):
# An explicit link to the parent (we can control the attribute name).
parent = models.OneToOneField(

View File

@ -10,6 +10,7 @@ from .models import (
Base,
Chef,
CommonInfo,
CustomSupplier,
GrandChild,
GrandParent,
ItalianRestaurant,
@ -191,6 +192,22 @@ class ModelInheritanceTests(TestCase):
sql = query["sql"]
self.assertIn("INSERT INTO", sql, sql)
def test_create_copy_with_inherited_m2m(self):
restaurant = Restaurant.objects.create()
supplier = CustomSupplier.objects.create(
name="Central market", address="944 W. Fullerton"
)
supplier.customers.set([restaurant])
old_customers = supplier.customers.all()
supplier.pk = None
supplier.id = None
supplier._state.adding = True
supplier.save()
supplier.customers.set(old_customers)
supplier = Supplier.objects.get(pk=supplier.pk)
self.assertCountEqual(supplier.customers.all(), old_customers)
self.assertSequenceEqual(supplier.customers.all(), [restaurant])
def test_eq(self):
# Equality doesn't transfer in multitable inheritance.
self.assertNotEqual(Place(id=1), Restaurant(id=1))