mirror of
https://github.com/ZwareBear/awx.git
synced 2026-04-23 00:11:48 -05:00
correctly cascade set null
* It's problematic to delete an instance that is referenced by a foreign key; where the referening model is one that has a Polymorphic parent. * Specifically, when Django goes to nullify the relationship it relies on the related instances[0] class type to issue a query to decide what to nullify. So if the foreignkey references multiple different types (i.e. ProjectUpdate, Job) then only 1 of those class types will get nullified. The end result is an IntegrityError when delete() is called. * This changeset ensures that the parent Polymorphic class is queried so that all the foreignkey entries are nullified * Also remove old Django "hack" that doesn't work with Django 1.11
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import models
|
||||
|
||||
|
||||
def build_polymorphic_ctypes_map(cls):
|
||||
@@ -10,3 +11,7 @@ def build_polymorphic_ctypes_map(cls):
|
||||
if ct_model_class and issubclass(ct_model_class, cls):
|
||||
mapping[ct.id] = ct_model_class._camel_to_underscore(ct_model_class.__name__)
|
||||
return mapping
|
||||
|
||||
|
||||
def SET_NULL(collector, field, sub_objs, using):
|
||||
return models.SET_NULL(collector, field, sub_objs.non_polymorphic(), using)
|
||||
|
||||
Reference in New Issue
Block a user