TutorialDivingIn05: model.py

File model.py, 1.2 kB (added by ged, 4 years ago)
Line 
1from elixir import *
2
3metadata.bind = 'sqlite:///movies.sqlite'
4metadata.bind.echo = True
5
6class Movie(Entity):
7    title = Field(Unicode(30), primary_key=True)
8    year = Field(Integer, primary_key=True)
9    description = Field(Unicode)
10    releasedate = Field(DateTime)
11   
12    director = ManyToOne('Director')
13    genres = ManyToMany('Genre')
14    actors = ManyToMany('Actor', tablename='movie_casting')
15
16    def __repr__(self):
17        return '<Movie "%s" (%d)>' % (self.title, self.year)
18
19class Person(Entity):
20    using_options(inheritance='multi')
21
22    name = Field(Unicode(60))
23
24    def __repr__(self):
25        return '<Person "%s">' % self.name
26
27class Actor(Person):
28    using_options(inheritance='multi')
29
30    movies = ManyToMany('Movie', tablename='movie_casting')
31
32    def __repr__(self):
33        return '<Actor "%s">' % self.name
34
35class Director(Person):
36    using_options(inheritance='multi')
37
38    movies = OneToMany('Movie')
39
40    def __repr__(self):
41        return '<Director "%s">' % self.name
42
43class Genre(Entity):
44    name = Field(Unicode(15), primary_key=True)
45
46    movies = ManyToMany('Movie')
47   
48    def __repr__(self):
49        return '<Genre "%s">' % self.name