diff options
| -rw-r--r-- | archaeological_finds/models_finds.py | 19 | 
1 files changed, 14 insertions, 5 deletions
| diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index f91269456..c292cd368 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -2135,11 +2135,20 @@ class Find(          Return comma separated string of recommendations from material          """          recommendations = set() -        for recommendation in self.material_types.exclude( -                recommendation__isnull=True).exclude( -            recommendation="").values_list("recommendation", flat=True -        ): -            recommendations.add(recommendation) +        for level in range(5): +            excludes = [ +                ("parent__" * level + "recommendation__isnull", True), +                ("parent__" * level + "recommendation", ""), +            ] +            q = self.material_types +            if level: +                q = q.exclude(**{("parent__" * level)[:-2] + "_id": None}) +            for k, v in excludes: +                q = q.exclude(**{k: v}) + +            for recommendation in q.values_list( +                    "parent__" * level + "recommendation", flat=True): +                recommendations.add(recommendation)          return ", ".join(sorted(recommendations))      def get_values(self, prefix="", no_values=False, filtr=None, **kwargs): | 
