Filtraggio del modello di App Engine con Django
-
05-07-2019 - |
Domanda
ciao sto usando la patch del motore dell'app django, ho impostato un modello semplice come segue
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']
Sto utilizzando le seguenti visualizzazioni per verificare se esiste qualcosa nel database e aggiungerlo al database
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')
posso aggiungere al database senza problemi (quando faccio un Intake.all (). count ()
aumenta) ma quando controllo se la chiave esiste nel database filtrando sono ottenere un conteggio di zero qualcuno ha idea del perché non sono in grado di filtrare per chiavi?
Soluzione
È necessario inserire uno spazio tra il nome del campo e l'operatore negli argomenti del filtro, ad esempio utilizzare .filter ('take = ')
anziché .filter (' assunzione = ')
. Con un filtro per l'uguaglianza, puoi anche lasciarlo completamente fuori, come in .filter ('aspirazione')
. Senza lo spazio, il segno di uguale è considerato parte del nome del campo.