Skip to content

Commit

Permalink
Merge pull request #10 from melvinkcx/fix_#9
Browse files Browse the repository at this point in the history
Fixed #9
  • Loading branch information
melvinkcx authored Mar 7, 2020
2 parents 974b507 + dfc3a3c commit 81ee785
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 6 deletions.
15 changes: 10 additions & 5 deletions model_field_meta/fields.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
class FieldWithMeta:
def __init__(self, **kwargs):
if 'meta' in kwargs:
self._meta = kwargs['meta']
del kwargs["meta"]
super(self.__class__, self).__init__(**kwargs)
@staticmethod
def generate___init__(base_class):
# Fix #9: Support custom field
def __init__(self, **kwargs):
if 'meta' in kwargs:
self._meta = kwargs['meta']
del kwargs["meta"]
super(base_class, self).__init__(**kwargs)

return __init__

def get_meta(self):
return self._meta
Expand Down
2 changes: 1 addition & 1 deletion model_field_meta/wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def __init__(self):
if field.endswith("Field") and field != "Field":
base_class = getattr(django_models, field)
self.new_classes[field] = type(field, (base_class,), {
"__init__": FieldWithMeta.__init__,
"__init__": FieldWithMeta.generate___init__(base_class),
"_meta": None,
"get_meta": FieldWithMeta.get_meta,
"deconstruct": FieldWithMeta.deconstruct,
Expand Down
6 changes: 6 additions & 0 deletions tests/fields.py → tests/test_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@


class FieldMetaTestSuite(TestCase):
def test_custom_field_can_be_instantiated(self):
class CustomTextField(models.TextField):
pass

CustomTextField()

def test_empty_meta(self):
field = models.TextField()
self.assertFalse(field.get_meta())
Expand Down
File renamed without changes.
File renamed without changes.

0 comments on commit 81ee785

Please sign in to comment.