Skip to content

Commit

Permalink
more django 1.10 compatibility fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
GeyseR committed Sep 7, 2016
1 parent 78879b5 commit 18709c2
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 10 deletions.
13 changes: 10 additions & 3 deletions django_any/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,15 @@ def get_model_private_fields(model):
return model._meta.virtual_fields


def get_related_field_model(field):
def get_remote_field(field):
if django.VERSION >= (1, 9):
return field.target_field.model
return field.remote_field
else:
return field.target_field


def get_remote_field_model(field):
if django.VERSION >= (1, 9):
return field.remote_field.model
else:
return field.related_field.model
return field.target_field.model
2 changes: 1 addition & 1 deletion django_any/contrib/default.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def any_model_with_defaults(cls, **attrs):
# for stuff like default=datetime.now
default = default()
if isinstance(field, (ForeignKey, OneToOneField)):
Model = compat.get_related_field_model(field)
Model = compat.get_remote_field_model(field)
if not isinstance(default, Model):
try:
default = Model.objects.get(pk=default)
Expand Down
10 changes: 5 additions & 5 deletions django_any/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -478,12 +478,12 @@ def any_time_field(field, **kwargs):

@any_field.register(models.ForeignKey)
def any_foreignkey_field(field, **kwargs):
return any_model(field.rel.to, **kwargs)
return any_model(compat.get_remote_field_model(field), **kwargs)


@any_field.register(models.OneToOneField)
def any_onetoone_field(field, **kwargs):
return any_model(field.rel.to, **kwargs)
return any_model(compat.get_remote_field_model(field), **kwargs)


def _fill_model_fields(model, **kwargs):
Expand All @@ -503,20 +503,20 @@ def _fill_model_fields(model, **kwargs):
Lookup ForeingKey field in db
"""
key_field = model._meta.get_field(field.name)
value = key_field.rel.to.objects.get(kwargs[field.name])
value = compat.get_remote_field_model(key_field).objects.get(kwargs[field.name])
setattr(model, field.name, value)
else:
# TODO support any_model call
setattr(model, field.name, kwargs[field.name])
elif isinstance(field, models.OneToOneField) and field.rel.parent_link:
elif isinstance(field, models.OneToOneField) and compat.get_remote_field(field).parent_link:
"""
skip link to parent instance
"""
elif isinstance(field, models.fields.AutoField):
"""
skip primary key field
"""
elif isinstance(field, models.fields.related.ForeignKey) and field.model == field.rel.to:
elif isinstance(field, models.fields.related.ForeignKey) and field.model == compat.get_remote_field_model(field):
"""
skip self relations
"""
Expand Down
2 changes: 1 addition & 1 deletion django_any/tests/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class TestForm(forms.Form):
form = TestForm()

template = Template("{{ form }}")
context = Context({'form' : form})
context = Context({'form': form})

return HttpResponse(template.render(context))

Expand Down

0 comments on commit 18709c2

Please sign in to comment.