diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index ba4f8894e8..ddf3003d55 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -339,6 +339,10 @@ class Field(object): # TODO: This is just a temporary default during development. return forms.CharField(required=not self.blank, label=capfirst(self.verbose_name), initial=initial) + def value_from_object(self, obj): + "Returns the value of this field in the given model instance." + return getattr(obj, self.attname) + class AutoField(Field): empty_strings_allowed = False def __init__(self, *args, **kwargs): diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 8cc26c9ee4..433b5bde13 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -721,6 +721,10 @@ class ManyToManyField(RelatedField, Field): def set_attributes_from_rel(self): pass + def value_from_object(self, obj): + "Returns the value of this field in the given model instance." + return getattr(obj, self.attname).all() + def formfield(self, initial=None): return forms.MultipleChoiceField(choices=self.get_choices_default(), required=not self.blank, label=capfirst(self.verbose_name), initial=initial)