Привет, я пытаюсь создать приложение, в котором есть модели, похожие на приведенные ниже :-( Хотя было бы легко объединить две модели в одну и использовать их, но в реальном приложении это невозможно)
class User(db.Model):
username=db.StringProperty()
email=db.StringProperty()
class UserLikes(db.Model):
username=db.StringProperty()
food=db.StringProperty()
Цель - пользователь после входа в систему вводит понравившуюся ему еду, а приложение в свою очередь возвращает всех остальных пользователей, которым эта еда нравится.Теперь предположим, что пользователь Алиса вводит, что ей нравятся «Пиццы», они сохраняются в хранилище данных.Она выходит из системы и снова входит в систему. В этот момент мы запрашиваем в хранилище данных понравившуюся ей еду, а затем снова запрашиваем всех пользователей, которым она нравится.Как вы видите, это два запроса к хранилищу данных, что не является лучшим способом.Я уверен, что был бы лучший способ сделать это.Может кто-нибудь, пожалуйста, помогите.
[Обновление: -Или можно сделать что-то подобное, чтобы я изменил вторую модель так, чтобы имена пользователей стали многозначным свойством, в котором могут храниться все пользователи, которым нравится эта еда ... однакоЯ немного неясен здесь]
[Edit: -Hi Спасибо за ответ, но я нашел оба решения ниже немного излишним здесь.Я попытался сделать это, как показано ниже. Просим вас взглянуть на это и любезно дать совет.Я сохранил те же две таблицы, но изменил их, как показано ниже: -
class User(db.Model):
username=db.StringProperty()
email=db.StringProperty()
class UserLikes(db.Model):
username=db.ListProperty(basestring)
food=db.StringProperty()
Теперь, когда 2 пользователя обновляют одну и ту же еду, которая им нравится, она сохраняется как
'pizza' ----> 'Алиса', 'Боб'
И мой запрос к БД для получения данных здесь становится довольно простым
query=db.Query(UserLikes).filter('username =','Alice').get()
, который я затем могу повторять как что-то вроде
for elem in query.username:
print elem
Теперь, если есть два продукта, как показано ниже: -
'pizza' ----> 'Alice','Bob'
'bacon'----->'Alice','Fred'
Я использую тот же запрос, что и выше, и перебираю запросы, а затем имена пользователей.
Я новичок вэто, чтобы понять, что это может быть неправильно.Пожалуйста, предложите!