Я пишу приложение для сравнения продуктов, используя Python и GAE.Продукты будут принадлежать к набору похожих продуктов, и приложение рассчитывает наилучшее значение в каждом наборе.
Когда я создаю новый продукт, его можно добавить в существующий набор или создать новый набор.
При тестировании приложения первый набор создается очень хорошо.Я заполняю экземпляр набора названием продукта.Я использую форму на одной веб-странице, чтобы разместить данные на странице "Suppbook".Я до сих пор не понимаю, как веб-страница может быть классом, но это другой вопрос.
Вокруг всего этого есть код, но я пытаюсь сделать свой вопрос максимально понятным.
class Supp(db.Model):
name = db.StringProperty(multiline=False)
# a bunch of other attributes using Google's DB Model
class SuppSet(db.Model):
name = db.StringProperty(default='')
supp_list = set([])
# a bunch of other attributes using Google's DB Model
# i tried to add this after reading a few questions on SO but GAE doesn't like it
def __init__(self,):
self.name = 'NoName'
self.best_value = 'NoBestValue'
self.supp_list = set([])
Class Suppbook(webapp.RequestHandler):
def post(self):
supp = Supp()
suppSet = SuppSet()
...
supp.name = self.request.get('name')
supp.in_set = self.request.get('newset')
suppSet.name = supp.in_set
suppSet.supp_list.add(supp.name)
self.response.out.write('%s now contains %s<p>' % (suppSet.name,suppSet.supp_list))
Это хорошо работает в первый раз, и если я использую только один SuppSet
, я могу добавить к нему много глотков.Если я создам еще один SuppSet
, то оба suppSets
будут иметь одинаковое содержимое для своих supp_list
.Я просматривал вопросы здесь и думаю (знаю), что я делаю что-то не так в отношении доступа к атрибутам класса и экземпляра.Я пытался создать __init__
метод для SuppSet
, но GAE пожаловался: AttributeError: у объекта SuppSet нет атрибута _entity
Кроме того, я использую хранилище данных GAE дляput () и get () Supps и SuppSets, поэтому я не понимаю, почему я не обращаюсь к уникальным экземплярам, которые я должен извлекать из БД.
Я не уверен, если япредоставить достаточно информации, но я хотел бы начать по этому вопросу.Пожалуйста, дайте мне знать, если нужна дополнительная информация, чтобы помочь отладить это.
Я также открыт для идеи, что я делаю это совершенно неправильно.Я подумываю о переписывании всего этого, но я настолько близок к тому, чтобы «закончить» с основными функциями, и я хотел бы попытаться решить эту проблему.
Спасибо