-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
49 lines (39 loc) · 1.54 KB
/
Copy pathmodels.py
File metadata and controls
49 lines (39 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from database import Base
from sqlalchemy import Column, Integer, Boolean, Text, String, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy_utils.types import ChoiceType
class User(Base):
__tablename__='user'
id=Column(Integer, primary_key=True)
username=Column(String(25), unique=True)
email=Column(String(70), unique=True)
password=Column(Text, nullable=True)
is_staff=Column(Boolean, default=False)
is_active=Column(Boolean, default=False)
orders=relationship('Order', back_populates='user') # one-to-many
def __repr__(self):
return f"<user {self.username}"
class Order(Base):
ORDER_STATUSES=(
('PENDING', 'pending'),
('IN_TRANSIT', 'in_transit'),
('DELIVIRED', 'delivered')
)
__tablename__='orders'
id=Column(Integer, primary_key=True)
quantity=Column(Integer, nullable=False)
order_statuses=Column(ChoiceType(choices=ORDER_STATUSES), default="PENDING")
user_id=Column(Integer, ForeignKey('user.id'))
user=relationship('User', back_populates='orders') # many-to-one
product_id=Column(Integer, ForeignKey('product.id'))
product=relationship('Product', back_populates='orders') # many-to-one
def __repr__(self):
return f"<order {self.id}"
class Product(Base):
__tablename__='product'
id=Column(Integer, primary_key=True)
name=Column(String(100))
price=Column(Integer)
orders=relationship('Order', back_populates='product') # one-to-many
def __repr__(self):
return f"<product {self.name}"