mirror of
https://github.com/django/django.git
synced 2025-10-26 15:16:09 +00:00
Renamed Field.rel attribute to remote_field
Field.rel is now deprecated. Rel objects have now also remote_field attribute. This means that self == self.remote_field.remote_field. In addition, made the Rel objects a bit more like Field objects. Still, marked ManyToManyFields as null=True.
This commit is contained in:
committed by
Tim Graham
parent
f9c70bb3a1
commit
8f30556329
@@ -14,7 +14,7 @@ class ProtectedError(IntegrityError):
|
||||
|
||||
|
||||
def CASCADE(collector, field, sub_objs, using):
|
||||
collector.collect(sub_objs, source=field.rel.to,
|
||||
collector.collect(sub_objs, source=field.remote_field.model,
|
||||
source_attr=field.name, nullable=field.null)
|
||||
if field.null and not connections[using].features.can_defer_constraint_checks:
|
||||
collector.add_field_update(field, None, sub_objs)
|
||||
@@ -23,7 +23,7 @@ def CASCADE(collector, field, sub_objs, using):
|
||||
def PROTECT(collector, field, sub_objs, using):
|
||||
raise ProtectedError("Cannot delete some instances of model '%s' because "
|
||||
"they are referenced through a protected foreign key: '%s.%s'" % (
|
||||
field.rel.to.__name__, sub_objs[0].__class__.__name__, field.name
|
||||
field.remote_field.model.__name__, sub_objs[0].__class__.__name__, field.name
|
||||
),
|
||||
sub_objs
|
||||
)
|
||||
@@ -136,7 +136,7 @@ class Collector(object):
|
||||
skipping parent -> child -> parent chain preventing fast delete of
|
||||
the child.
|
||||
"""
|
||||
if from_field and from_field.rel.on_delete is not CASCADE:
|
||||
if from_field and from_field.remote_field.on_delete is not CASCADE:
|
||||
return False
|
||||
if not (hasattr(objs, 'model') and hasattr(objs, '_raw_delete')):
|
||||
return False
|
||||
@@ -153,7 +153,7 @@ class Collector(object):
|
||||
# Foreign keys pointing to this model, both from m2m and other
|
||||
# models.
|
||||
for related in get_candidate_relations_to_delete(opts):
|
||||
if related.field.rel.on_delete is not DO_NOTHING:
|
||||
if related.field.remote_field.on_delete is not DO_NOTHING:
|
||||
return False
|
||||
for field in model._meta.virtual_fields:
|
||||
if hasattr(field, 'bulk_related_objects'):
|
||||
@@ -214,14 +214,13 @@ class Collector(object):
|
||||
# object instance.
|
||||
parent_objs = [getattr(obj, ptr.name) for obj in new_objs]
|
||||
self.collect(parent_objs, source=model,
|
||||
source_attr=ptr.rel.related_name,
|
||||
source_attr=ptr.remote_field.related_name,
|
||||
collect_related=False,
|
||||
reverse_dependency=True)
|
||||
|
||||
if collect_related:
|
||||
for related in get_candidate_relations_to_delete(model._meta):
|
||||
field = related.field
|
||||
if field.rel.on_delete == DO_NOTHING:
|
||||
if field.remote_field.on_delete == DO_NOTHING:
|
||||
continue
|
||||
batches = self.get_del_batches(new_objs, field)
|
||||
for batch in batches:
|
||||
@@ -229,14 +228,14 @@ class Collector(object):
|
||||
if self.can_fast_delete(sub_objs, from_field=field):
|
||||
self.fast_deletes.append(sub_objs)
|
||||
elif sub_objs:
|
||||
field.rel.on_delete(self, field, sub_objs, self.using)
|
||||
field.remote_field.on_delete(self, field, sub_objs, self.using)
|
||||
for field in model._meta.virtual_fields:
|
||||
if hasattr(field, 'bulk_related_objects'):
|
||||
# Its something like generic foreign key.
|
||||
sub_objs = field.bulk_related_objects(new_objs, self.using)
|
||||
self.collect(sub_objs,
|
||||
source=model,
|
||||
source_attr=field.rel.related_name,
|
||||
source_attr=field.remote_field.related_name,
|
||||
nullable=True)
|
||||
|
||||
def related_objects(self, related, objs):
|
||||
|
||||
Reference in New Issue
Block a user