Disons que j'ai un modèleDjango recherche plusieurs filtres
models.py
class user:
name = models.CharField(max_length=25)
class job:
job_name = models.CharField(max_length=25)
class user_job:
user = models.ForeignKey('user')
job = models.ForeignKey('job')
forms.py
jobs = (
('0', 'a'),
('1', 'b'),
('2', 'c'),
)
class searchForm:
box = forms.ModelMultipleChoiceField(
choices = jobs,
widget = forms.CheckboxSelectMultiple(),
label = 'Search',
)
Je peux rechercher des utilisateurs qui ont l'emploi ' a 'avec
user_job.objects.filter(job__exact = 'a') ...
J'ai essayé de rechercher des utilisateurs qui ont à la fois l'emploi « a » et emploi « c » comme si
search_q = user_job.objects.filter(job__exact = 'a')
search_q = search_q.filter(job__exact = 'c')
mais je reçois tous les utilisateurs qui ont l'emploi « a » ou travail « c », et j'ai besoin de tous les utilisateurs qui ont les deux emplois.
Y a-t-il un moyen de le filtrer via Django, ou ai-je besoin de filtrer sur un travail, puis parcourir les résultats et vérifier le 2ème job?
hmm, cela fonctionne, je comprends DonT bien comment, mais juste fonctionne: D ... pourquoi est-ce que je regarde dans User.objects.filter? et pas dans UserJob.objects.filter? Si vous le pouvez ... pouvez-vous me donner un peu de sql de comment cela va ressembler ... de toute façon c'est souvent ce dont j'avais besoin ... Merci pour votre temps et GL – void
Vous filtrez l'utilisateur 'objet parce que ce que vous voulez en arrière est une liste d'utilisateurs (ceci basé sur le fait que la question de domaine de problème est" Quels utilisateurs ont le travail a et le travail c? "). Il est également sémantiquement plus facile de formuler une requête django saine pour ce problème en commençant par l'objet 'User'. Vous pouvez voir les instructions SQL générées par django en examinant les résultats de 'django.db.connection':' depuis la connexion d'importation django.db; print connection.queries' –