diff --git a/djangoldp/models.py b/djangoldp/models.py index 5ebfd80b7c52d90de441447f7317c144a3daf2e6..f2907ad0ee074cf541cb5a1af2a69d2f6e422934 100644 --- a/djangoldp/models.py +++ b/djangoldp/models.py @@ -35,7 +35,8 @@ class LDPModelManager(models.Manager): # include all many-to-many relations for field_name, relation_info in model_meta.get_field_info(self.model).relations.items(): if relation_info.to_many: - nested_fields.add(field_name) + if field_name is not None: + nested_fields.add(field_name) # include all nested fields explicitly included on the model nested_fields.update(set(Model.get_meta(self.model, 'nested_fields', set()))) # exclude anything marked explicitly to be excluded diff --git a/djangoldp/tests/models.py b/djangoldp/tests/models.py index 6c2b5b8487825a387d087c2f471a16d83c227859..a1bf7db49b1d4b0e3c6671eba4415b5dc8a2d262 100644 --- a/djangoldp/tests/models.py +++ b/djangoldp/tests/models.py @@ -191,7 +191,6 @@ class Circle(Model): null=True, blank=True) class Meta(Model.Meta): - nested_fields_exclude = ["team"] anonymous_perms = ['view', 'add', 'delete', 'add', 'change', 'control'] authenticated_perms = ["inherit"] rdf_type = 'hd:circle' diff --git a/djangoldp/tests/tests_ldp_model.py b/djangoldp/tests/tests_ldp_model.py index 626fc967f85fc8adc5a28c036014705ec6028258..fb9ab4623ea8d3383b69195408b6f73979886e74 100644 --- a/djangoldp/tests/tests_ldp_model.py +++ b/djangoldp/tests/tests_ldp_model.py @@ -46,11 +46,19 @@ class LDPModelTest(TestCase): self.assertIn(local, local_queryset) self.assertNotIn(external, local_queryset) - def test_ldp_manager_nested_fields(self): + def test_ldp_manager_nested_fields_auto(self): nested_fields = Circle.objects.nested_fields() - expected_nested_fields = ['members'] - self.assertEqual(nested_fields, expected_nested_fields) + expected_nested_fields = ['team', 'members'] + self.assertEqual(len(nested_fields), len(expected_nested_fields)) + for expected in expected_nested_fields: + self.assertIn(expected, nested_fields) nested_fields = CircleMember.objects.nested_fields() expected_nested_fields = [] self.assertEqual(nested_fields, expected_nested_fields) + + def test_ldp_manager_nested_fields_exclude(self): + setattr(Circle.Meta, 'nested_fields_exclude', ['team']) + nested_fields = Circle.objects.nested_fields() + expected_nested_fields = ['members'] + self.assertEqual(nested_fields, expected_nested_fields)