0

検索ボックスが必要です。モデルのフィールドの 1 つに M2M フィールドがあります。私はそれが機能するようになりましたが、名前ではなくM2MフィールドのIDを探すときにのみ機能します。私のモデル:

class Specialities(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


 class Profile(models.Model):
        user = models.OneToOneField(User)
        name = models.CharField(max_length=200)
        specialities = models.ManyToManyField(Specialities)

        def __str__(self):
            return self.name

そして私の見解:

class SearchView(TemplateView):
    template_name = 'contadores/search.html'

    def post(self,request,*args,**kwargs):
        buscar = request.POST['buscar']
        contadores = Profile.objects.filter(specialities=buscar)
        ctx = {'contadores':contadores}
        return render_to_response('contadores/resultados.html',ctx,context_instance=RequestContext(request))

「contadores」のクエリセットは正常に機能しますが、前に言ったように、検索ボックスで単語を探すと、検索ボックスは M2M フィールドの ID のみを受け取ります。 'niif'理由はわかりますが、ID の代わりに Specialties モデルに関連付けられた M2M フィールドの単語を検索ボックスに渡すにはどうすればよいですか?

4

2 に答える 2

0

このようにしてみてください:

 buscar = Specialities.objects.filter(name__iexact = request.POST['buscar'])
 if buscar.exists():
     contadores = Profile.objects.filter(specialities=buscar[0])
于 2015-01-07T06:18:17.547 に答える
0

あなたができることは、次のように関連するテーブルで検索することです:

contadores = Profile.objects.filter(specialities__name__iexact = request.POST['buscar'])
于 2015-01-07T06:22:29.817 に答える