在ManyToManyField中的B之间搜索A

Sascha Rau

我试图从邮政编码A到邮政编码B搜索本地经理。

例如:

"Manager west" as the regions
zipform | zipto
17000  to 17259
17300  to 19309
19360  to 19419
23920  to 23999

models.py

class Region(models.Model):
    zipfrom = models.CharField(u'PLZ von', max_length=50, blank=True)
    zipto = models.CharField(u'PLZ bis', max_length=50, blank=True)

    class Meta:
        verbose_name = u'Region'
        verbose_name_plural = u'Regionen'

    def __unicode__(self):
        return "{0} - {1}".format(self.zipfrom, self.zipto)


class AddPartner(models.Model):
    name = models.CharField(u'Name', max_length=50)
    regionen = models.ManyToManyField(Region, verbose_name=u'regionen', blank=True)

    class Meta:
        verbose_name = u'AddPartner'
        verbose_name_plural = u'AddPartners'

    def __unicode__(self):
        return self.name

views.py

from django.shortcuts import redirect, render, render_to_response 
from django.template import Template, RequestContext
from partner.models import AddPartner, Region
from django.db.models import Q

def partnerview(request):
    partner = AddPartner.objects.all()
    region = Region.objects.all()   
    if 'q' in request.GET and request.GET['q']: 
        q = request.GET['q']
        suche = region.filter(Q(zipto=q) | Q(zipform=q)) # despair
    else:
        return render_to_response('partner.html',{
        'partner': partner, 'region': region, },context_instance=RequestContext(request)) 

    return render_to_response('partner.html',{
        'partner': partner, 'region': region,'suches': suche, 'query': q
    },context_instance=RequestContext(request))

我是一个初学者,我不知道要解决这个问题。下一个大问题是在模板中获取装配结果“本地经理”。

双体船

您可以使用一对__lte/__gte查找。下一个查询将找到以下区域zipfrom <= q <= zipto

suche = region.filter(zipfrom__lte=q, zipto__gte=q)

要获取找到的区域的经理列表,请使用以下查询:

managers = AddPartner.objects.distinct().filter(regionen__in=suche)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章