Fix error in ModelState.clone() not copying deep enough

This commit is contained in:
Andrew Godwin 2013-05-30 18:21:32 +01:00
parent e6f7f4533c
commit e6ba63def3
1 changed files with 6 additions and 2 deletions

View File

@ -47,6 +47,10 @@ class ModelState(object):
Represents a Django Model. We don't use the actual Model class
as it's not designed to have its options changed - instead, we
mutate this one and then render it into a Model as required.
Note that while you are allowed to mutate .fields, you are not allowed
to mutate the Field instances inside there themselves - you must instead
assign new ones, as these are not detached during a clone.
"""
def __init__(self, app_label, name, fields, options=None, bases=None):
@ -92,8 +96,8 @@ class ModelState(object):
return self.__class__(
app_label = self.app_label,
name = self.name,
fields = self.fields,
options = self.options,
fields = list(self.fields),
options = dict(self.options),
bases = self.bases,
)