mirror of https://github.com/django/django.git
Refs #24227 -- Fixed crash of ManyToManyField.value_from_object() on unsaved model instances.
This behavior was removed in 67d984413c
but is needed to prevent a crash in formtools.
This commit is contained in:
parent
4f474607de
commit
a4c20ae85b
|
@ -1565,6 +1565,8 @@ class ManyToManyField(RelatedField):
|
|||
"""
|
||||
Return the value of this field in the given model instance.
|
||||
"""
|
||||
if obj.pk is None:
|
||||
return []
|
||||
qs = getattr(obj, self.attname).all()
|
||||
if qs._result_cache is not None:
|
||||
return [item.pk for item in qs]
|
||||
|
|
|
@ -6,6 +6,14 @@ from django.test.utils import isolate_apps
|
|||
|
||||
class ManyToManyFieldTests(SimpleTestCase):
|
||||
|
||||
@isolate_apps('model_fields')
|
||||
def test_value_from_object_instance_without_pk(self):
|
||||
class ManyToManyModel(models.Model):
|
||||
m2m = models.ManyToManyField('self', models.CASCADE)
|
||||
|
||||
instance = ManyToManyModel()
|
||||
self.assertEqual(instance._meta.get_field('m2m').value_from_object(instance), [])
|
||||
|
||||
def test_abstract_model_pending_operations(self):
|
||||
"""
|
||||
Many-to-many fields declared on abstract models should not add lazy
|
||||
|
|
Loading…
Reference in New Issue