2015-08-03 2 views
3

Я создал модель, используя peewee ORM, который выглядит следующим образом:Как вы храните список в модели Peewee?

class Person(Model): 
username = CharField(max_length=255, unique=True) 
badges = ??? # No list field? 

class Meta: 
    database = db 

Это данные, которые я буду хранить:

people = [ 
{'username': 'user1', 'badges': ['badge 1','badge 2']}, 
{'username': 'user2', 'badges': ['badge 1', 'badge 2', 'badge 3']}, 
{'username': 'user3', 'badges': ['badge 1', 'badge 2', 'badge 3', 'badge 4']}, 
] 

Я хотел сохранить свои значки в списке строк, но нет поля списка. Как еще я могу сделать что-то подобное?

ответ

5

Вам также необходимо определить модель значка и определить связь между значком и человеком. Я думаю, что то, что вы можете искать, это отношения «многие ко многим». Вы можете определить его следующим образом и вам придется использовать ваши запросы для объединения таблиц.

class Person(Model): 
    username = CharField(max_length=255, unique=True) 

class BadgeEarned(Model): 
    awardee = ForeignKey(Person) 
    badge = ForeignKey(Badge) 

class Badge(Model): 
    description = Charfield(max_length=255, unique=True) 

Пример запроса с этим отношением

query = (Person 
    .select() 
    .join(BadgeEarned) 
    .join(Badge)) 

Edit: Существует также many to many extension module, если вы хотите, чтобы избежать необходимости писать присоединяется.

Смежные вопросы