Question

salut j'utilise le patch de moteur d'application django, j'ai configuré un modèle simple comme suit

class Intake(db.Model):
    intake=db.StringProperty(multiline=False, required=True)
    #@permerlink 
    def get_absolute_url(self):
       return "/timekeeper/%s/" % self.intake
    class Meta:
       db_table = "Intake"
       verbose_name_plural = "Intakes"
       ordering = ['intake']

J'utilise les vues suivantes pour vérifier si quelque chose existe dans la base de données et l'ajouter à la base de données

from ragendja.template import render_to_response
from django.http import HttpResponse, Http404
from google.appengine.ext import db
from timekeeper.forms import *
from timekeeper.models import *

def checkintake(request, key):
    intake = Intake.all().filter('intake=',key).count()
    if intake<1:
       return HttpResponse('ok')
    else:
       return HttpResponse('Exist in database')

def addintake(request,key):
    if Intake.all().filter('intake=',key).count()>1:
        return HttpResponse('Item already Exist in Database')
    else:
        data = Intake(intake=cleaned_data[key])
        data.put()
        return HttpResponse('Ok')

Je peux ajouter à la base de données sans problème (quand je fais un Intake.all (). count () cela augmente) mais quand je vérifie si la clé existe dans la base de données en filtrant je suis obtenir un compte de zéro tout le monde a aucune idée pourquoi je ne suis pas en mesure de filtrer par les clés?

Était-ce utile?

La solution

Vous devez insérer un espace entre le nom du champ et l'opérateur dans vos arguments de filtre. Par exemple, utilisez .filter ('apport =') au lieu de .filter ('apport = ') . Avec un filtre d'égalité, vous pouvez également l'omettre complètement, comme dans .filter ('absorption') . Sans l'espace, le signe égal fait partie du nom du champ.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top