Skip to content

Commit

Permalink
Merge e37f119 into 1a6ea28
Browse files Browse the repository at this point in the history
  • Loading branch information
haakenlid committed Dec 15, 2017
2 parents 1a6ea28 + e37f119 commit e08c07e
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 24 deletions.
19 changes: 16 additions & 3 deletions test_project/generic/models.py
Expand Up @@ -18,10 +18,23 @@ def __str__(self):
@six.python_2_unicode_compatible
class ModelB(models.Model):
name = models.CharField(max_length=64)
a = models.ForeignKey(ModelA, blank=True, null=True, related_name='rel_b')
content_type = models.ForeignKey(ContentType, related_name='+')
a = models.ForeignKey(
ModelA,
blank=True,
null=True,
related_name='rel_b',
on_delete=models.CASCADE,
)
content_type = models.ForeignKey(
ContentType,
related_name='+',
on_delete=models.CASCADE,
)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
content_object = GenericForeignKey(
'content_type',
'object_id',
)

def __str__(self):
return self.name
4 changes: 2 additions & 2 deletions test_project/many_to_many/models.py
Expand Up @@ -13,7 +13,7 @@ def __str__(self):
return self.title

class Meta:
ordering = ('title',)
ordering = ('title', )


@six.python_2_unicode_compatible
Expand All @@ -25,4 +25,4 @@ def __str__(self):
return self.headline

class Meta:
ordering = ('headline',)
ordering = ('headline', )
8 changes: 6 additions & 2 deletions test_project/many_to_one/models.py
Expand Up @@ -19,10 +19,14 @@ def __str__(self):
class Article(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter, related_name='articles')
reporter = models.ForeignKey(
Reporter,
related_name='articles',
on_delete=models.CASCADE,
)

def __str__(self):
return self.headline

class Meta:
ordering = ('headline',)
ordering = ('headline', )
11 changes: 9 additions & 2 deletions test_project/one_to_one/models.py
Expand Up @@ -16,7 +16,11 @@ def __str__(self):

@six.python_2_unicode_compatible
class Restaurant(models.Model):
place = models.OneToOneField(Place, primary_key=True)
place = models.OneToOneField(
Place,
primary_key=True,
on_delete=models.CASCADE,
)
serves_hot_dogs = models.BooleanField(default=False)
serves_pizza = models.BooleanField(default=False)

Expand All @@ -26,7 +30,10 @@ def __str__(self):

@six.python_2_unicode_compatible
class Waiter(models.Model):
restaurant = models.ForeignKey(Restaurant)
restaurant = models.ForeignKey(
Restaurant,
on_delete=models.CASCADE,
)
name = models.CharField(max_length=50)

def __str__(self):
Expand Down
3 changes: 3 additions & 0 deletions tox.ini
@@ -1,10 +1,12 @@
[tox]
envlist =
{py36}-django{20}
{py27,py36,pypy}-django{18,11}
# 1.9 breaks pypy3 hence only testing with 18
# scandir fails to install in pypy3 so skippint for now
# {pypy3}-django{18}


[testenv]
basepython =
py27: python2.7
Expand All @@ -18,6 +20,7 @@ commands =
pip freeze
make check
deps =
django20: django=2.0
django18: django<1.9
django11: django<2
whitelist_externals =
Expand Down
35 changes: 20 additions & 15 deletions url_filter/filtersets/django.py
Expand Up @@ -12,17 +12,13 @@
from ..utils import SubClassDict
from .base import BaseModelFilterSet, ModelFilterSetOptions


__all__ = ['ModelFilterSet', 'DjangoModelFilterSetOptions']


GenericForeignKey = None


if 'django.contrib.contenttypes' in settings.INSTALLED_APPS:
from django.contrib.contenttypes.fields import GenericForeignKey


MODEL_FIELD_OVERWRITES = SubClassDict({
models.AutoField: forms.IntegerField(min_value=0),
models.FileField: lambda m: forms.CharField(max_length=m.max_length),
Expand All @@ -39,9 +35,12 @@ class DjangoModelFilterSetOptions(ModelFilterSetOptions):
Flag specifying whether reverse relationships should
be allowed while creating filter sets for children models.
"""

def __init__(self, options=None):
super(DjangoModelFilterSetOptions, self).__init__(options)
self.allow_related_reverse = getattr(options, 'allow_related_reverse', True)
self.allow_related_reverse = getattr(
options, 'allow_related_reverse', True
)


class ModelFilterSet(BaseModelFilterSet):
Expand All @@ -60,10 +59,12 @@ def _get_model_field_names(self):
This is used when ``Meta.fields`` is ``None``
in which case this method returns all model fields.
"""
return list(map(
operator.attrgetter('name'),
self.Meta.model._meta.get_fields()
))
return list(
map(
operator.attrgetter('name'),
self.Meta.model._meta.get_fields(),
)
)

def _get_form_field_for_field(self, field):
"""
Expand Down Expand Up @@ -122,17 +123,21 @@ def _build_filterset_from_related_field(self, field):
Build a :class:`.FilterSet` for a Django relation model field
such as ``ForeignKey``.
"""
return self._build_django_filterset(field, {
'exclude': [field.rel.name],
})
return self._build_django_filterset(
field, {
'exclude': [field.remote_field.name],
}
)

def _build_filterset_from_reverse_field(self, field):
"""
Build a :class:`.FilterSet` for a Django reverse relation model field.
"""
return self._build_django_filterset(field, {
'exclude': [field.field.name],
})
return self._build_django_filterset(
field, {
'exclude': [field.field.name],
}
)

def _build_django_filterset(self, field, meta_attrs):
m = field.related_model
Expand Down

0 comments on commit e08c07e

Please sign in to comment.