Фильтрация модели App Engine с помощью Django - PullRequest
1 голос
/ 27 ноября 2009

привет, я использую патч для движка приложения django. Я настроил простую модель следующим образом

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

Я использую следующие представления, чтобы проверить, существует ли какая-либо вещь в базе данных, и добавлю ее в базу данных

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

я могу добавить в базу данных без проблем (когда я делаю Intake.all().count(), он увеличивается), но когда я проверяю, существует ли ключ в базе данных, фильтруя, я получаю счетчик нуля, любой имеет представление, почему я не умеет фильтровать по ключам?

1 Ответ

2 голосов
/ 27 ноября 2009

Вам необходимо вставить пробел между именем поля и оператором в аргументах фильтра - например, используйте .filter('intake =') вместо .filter('intake='). С фильтром равенства вы также можете полностью его исключить, как в .filter('intake'). Без пробела знак равенства считается частью имени поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...