Pergunta

oi eu estou usando django remendo app engine i criaram um modelo simples da seguinte maneira

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']

Eu estou usando as seguintes exibições para verificar se existem alguns coisa na base de dados e adicionar ao banco de dados

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')

i pode adicionar ao banco de dados sem nenhum problema (quando eu faço um Intake.all().count() aumenta), mas quando eu verificar se a exist chave no banco de dados, filtrando estou recebendo uma contagem de zero qualquer um tem alguma idéia de por que eu não sou capaz para filtrar por chaves?

Foi útil?

Solução

Você precisa inserir um espaço entre o nome do campo e o operador em seus argumentos de filtro - por exemplo, o uso .filter('intake =') vez de .filter('intake='). Com um filtro de igualdade, você também pode deixá-lo por completo, como em .filter('intake'). Sem o espaço, o sinal de igual é considerado como sendo parte do nome do campo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top