@@ -21,8 +21,12 @@ class LazyList(object):
2121 DJANGO_FILTER_INSTALLED = False
2222
2323
24- def get_reverse_fields (model ):
24+ def get_reverse_fields (model , local_field_names ):
2525 for name , attr in model .__dict__ .items ():
26+ # Don't duplicate any local fields
27+ if name in local_field_names :
28+ continue
29+
2630 # Django =>1.9 uses 'rel', django <1.9 uses 'related'
2731 related = getattr (attr , 'rel' , None ) or \
2832 getattr (attr , 'related' , None )
@@ -44,22 +48,18 @@ def maybe_queryset(value):
4448
4549
4650def get_model_fields (model ):
47- reverse_fields = get_reverse_fields (model )
48- all_fields = [
51+ local_fields = [
4952 (field .name , field )
5053 for field
5154 in sorted (list (model ._meta .fields ) +
5255 list (model ._meta .local_many_to_many ))
5356 ]
5457
5558 # Make sure we don't duplicate local fields with "reverse" version
56- all_field_names = [field [0 ] for field in all_fields ]
57- actual_reverse_fields = [
58- reverse_field for reverse_field in reverse_fields
59- if reverse_field [0 ] not in all_field_names
60- ]
59+ local_field_names = [field [0 ] for field in local_fields ]
60+ reverse_fields = get_reverse_fields (model , local_field_names )
6161
62- all_fields += list (actual_reverse_fields )
62+ all_fields = local_fields + list (reverse_fields )
6363
6464 return all_fields
6565
0 commit comments