使用会话用户中设置的变量对ManyToManyField进行查询

时间:2014-02-13 14:19:00

标签: django django-models django-queryset django-sessions

这是我的模特:

class Clients(models.Model):


    client_name = models.CharField(max_lenght=100)
    commentaire_clients = models.TextField(blank=False)
    date_demande = models.TimeField(auto_now_add=True)
    choix = models.ManyToManyField('Agence', blank=True)

    def __unicode__(self):
        return unicode(self.date_demande)


class Market(models.Model):
    nom_market = models.CharField(max_length=200)
    code_postal_market = models.ManyToManyField('Lieux', blank=True)
    statut_vip = models.BooleanField(default=False)

    def __unicode__(self):
        return self.nom_market 

class Lieux(models.Model):
    code_postal = models.CharField(max_length=200)
    ville = models.CharField(max_length=200)
    region = models.CharField(max_length=200)
    departement = models.CharField(max_length=200)
    longitude = models.DecimalField(max_digits=9, decimal_places=6)
    latitude = models.DecimalField(max_digits=9, decimal_places=6)
    pays = models.CharField(max_length=100)
    def __unicode__(self):
        return unicode(self.code_postal)

以下是我的观点:

def comparelist(request):

    if request.session.get('code_postal'):
        poste = request.session.get('code_postal')
    else:
        poste = "RATE"

    market_match = Market.objects.filter(statut_vip=False, code_postal_market = poste)
    market_match_vip = Market.objects.filter(statut_vip=True)

   #edit bis repetita Market replace Agence models 

    return render_to_response('compare.html', {
        'code_postale': poste,
        'bien_immobilier': bien,
        'listing_agence' : market_match ,
        'listing_vip' : market_match_vip ,
    })

我要做的是做一个查询,它将给我所有匹配的市场: - statut_vip = False - code_postal_market = poste(我从上一页表单中的用户会话中获取

然后我尝试通过以下方式在我的模板中呈现它:

 {% for mes_market in listing_vip %}
        <br>{{mes_market.nom_market}}
        <br>{{mes_market.statut_vip}}
{% endfor %}       

修改

这是我的listing_agence模板(与前一个相同,但有正确的引用)抱歉错误。

 {% for mes_agences in listing_agence %}
        <br>{{mes_agences.nom_market}}
        <br>{{mes_agences.statut_vip}}

{% endfor %}       

我列出所有VIP客户端的第二个查询确实有效,但是当我尝试通过表单(并通过会话保留记录)通过用户提供的邮政编码进行过滤时 没有出现。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我终于成功了!

我换了:

market_match = Market.objects.filter(statut_vip=False, code_postal_market = poste)

通过

market_match = Market.objects.filter(statut_vip=False, code_postal_market__code_postal=poste)

code_postal来自Lieux表