Hi all,

In order to teach myself Django I am creating a simple film database  
project.  My search code looks like this:

results = Film.objects.filter(
                                Q(title__icontains=q) |
                                Q(director__name__icontains=q) |
                                Q(actors__name__icontains=q) |
                                Q(screenwriters__name__icontains=q) |
                                Q(genre__icontains=q)
                                )
                        
This lets me have a 'catch-all' search box that allows you to search  
on all of the fields of my film class.  It works, but I always get  
duplicate results.  The same film will appear several times (typically  
3, 4 or 6 times) in the search results.

As a sort of kluge to get around this, and to try to further diagnose  
what was happening, I wrote the following to try to remove duplicate  
results:

films = list(results)
                while len(films) > 1:
                        if films[len(films)-1] == films[len(films)-2]:
                                films.remove(films[len(films)-1])

This executes without any errors, but does not remove duplicate  
results from the list, from which I can only infer that for some  
reason the results that I think are identical are in fact different in  
some way.

My models look like this:

class Director(models.Model):
        name = models.CharField(max_length=70)

        def __unicode__(self):
                return u'%s' % (self.name,)
        
class Actor(models.Model):
        name = models.CharField(max_length=70)

        def __unicode__(self):
                return u'%s' % (self.name,)
                
class Screenwriter(models.Model):
        name = models.CharField(max_length=70)

        def __unicode__(self):
                return u'%s' % (self.name,)
                
                
class Film(models.Model):
        title = models.CharField(max_length=100)
        genre = models.CharField(max_length=40)
        actors = models.ManyToManyField(Actor)
        screenwriters = models.ManyToManyField(Screenwriter)
        director = models.ForeignKey(Director)
        release_date = models.DateField(blank=True, null=True)
        
        
        def __unicode__(self):
                return self.title

Does anybody have any ideas on what is happening here?  I am flummoxed!.

Thanks in advance,

Tom

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to