From: Joseph Spiros Date: Thu, 12 Aug 2010 21:04:38 +0000 (-0400) Subject: Explicit declaration of keys for AttributeFields and RelationshipFields is now unnece... X-Git-Tag: philo-0.9~37 X-Git-Url: http://git.ithinksw.org/philo.git/commitdiff_plain/6b1eb578f544517620de8e0abbec391a839a3d0c?ds=sidebyside Explicit declaration of keys for AttributeFields and RelationshipFields is now unnecessary, as they will use the attribute name on the model class they were assigned to by default. This implements feature #20. --- diff --git a/models/fields.py b/models/fields.py index 621d7a1..50df799 100644 --- a/models/fields.py +++ b/models/fields.py @@ -70,13 +70,18 @@ class AttributeFieldDescriptor(object): class AttributeField(EntityProxyField): descriptor_class = AttributeFieldDescriptor - def __init__(self, key, field_template=None): - super(AttributeField, self).__init__() + def __init__(self, field_template=None, key=None, **kwargs): + super(AttributeField, self).__init__(**kwargs) self.key = key if field_template is None: field_template = models.CharField(max_length=255) self.field_template = field_template + def contribute_to_class(self, cls, name): + super(AttributeField, self).contribute_to_class(cls, name) + if self.key is None: + self.key = name + def formfield(self, **kwargs): defaults = {'required': False, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} defaults.update(kwargs) @@ -117,14 +122,19 @@ class RelationshipFieldDescriptor(object): class RelationshipField(EntityProxyField): descriptor_class = RelationshipFieldDescriptor - def __init__(self, key, model, limit_choices_to=None): - super(RelationshipField, self).__init__() + def __init__(self, model, limit_choices_to=None, key=None, **kwargs): + super(RelationshipField, self).__init__(**kwargs) self.key = key self.model = model if limit_choices_to is None: limit_choices_to = {} self.limit_choices_to = limit_choices_to + def contribute_to_class(self, cls, name): + super(RelationshipField, self).contribute_to_class(cls, name) + if self.key is None: + self.key = name + def formfield(self, form_class=forms.ModelChoiceField, **kwargs): defaults = {'required': False, 'label': capfirst(self.verbose_name), 'help_text': self.help_text} defaults.update(kwargs)