2015-04-27 7 views
0

Я новичок в реляционных базах данных, и я совершенно смущен тем, как мне создавать модели. Что мне нужно сделать, так это отфильтровать содержимое сообщений через выбор языка и сделать это, чтобы создать реляционную базу данных. Мое сомнение возникает, когда вы решаете, сколько моделей (таблиц) я должен выполнить для этого. Вот пример:Реляционное сопоставление с использованием Peewee

models.py

class Post(Model): 
    timestamp = DateTimeField(default=datetime.datetime.now) 
    user = ForeignKeyField(
     rel_model=User, 
     related_name='posts' 
    ) 
    language = TextField() 
    content = ForeignKeyField(THIS NEEDS TO POINT TO THE LANGUAGE) 

    class Meta: 
     database = DATABASE 

Можно ли сделать что-то вроде этого? Должен ли я создать более одной модели Post?

Благодарим вас за продвижение.

ответ

0

Пропустили ли вы руководство по быстрому старту? Это может дать вам почувствовать, как создавать модели и устанавливать связи:

http://docs.peewee-orm.com/en/latest/peewee/quickstart.html

Чтобы ответить на ваш непосредственный вопрос, вы можете создать еще одну таблицу для языка, т.е.

class Language(Model): 
    name = CharField() 

    class Meta: 
     database = DATABASE 

Так все (вычистили немного):

DATABASE = SqliteDatabase('mydb.db') # or PostgresqlDatabase or MySQLDatabase 

class BaseModel(Model): 
    class Meta: 
     database = DATABASE 

class User(BaseModel): 
    email = CharField() 
    # whatever other user fields 

class Language(BaseModel): 
    name = CharField() 
    # other fields? 

class Post(BaseModel): 
    timestamp = DateTimeField(default=datetime.datetime.now) 
    user = ForeignKeyField(User, related_name='posts') 
    language = TextField() 
    content = ForeignKeyField(Language, related_name='posts') 
+0

Я прочитал документы, но не был уверен, как это сделать. Ваш ответ поможет другим людям, у которых есть те же сомнения, что и до сих пор. Спасибо дружище! – Yelp

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