source: music/models.py

Last change on this file was d93daa3, checked in by ManuelTrajcev <manueltrajcev7@…>, 4 weeks ago

django models update

  • Property mode set to 100644
File size: 7.2 KB
Line 
1from django.db import models
2
3
4class Artist(models.Model):
5 artist_id = models.AutoField(primary_key=True)
6 name = models.CharField(max_length=120, blank=True, null=True)
7 deleted_at = models.DateTimeField(null=True, blank=True)
8
9 def __str__(self):
10 return self.name or "Unknown Artist"
11
12 class Meta:
13 db_table = 'artist'
14
15
16class Album(models.Model):
17 album_id = models.AutoField(primary_key=True)
18 title = models.CharField(max_length=160)
19 artist = models.ForeignKey(Artist, on_delete=models.CASCADE, db_column='artist_id')
20 deleted_at = models.DateTimeField(null=True, blank=True)
21
22 def __str__(self):
23 return self.title
24
25 class Meta:
26 db_table = 'album'
27
28
29class Employee(models.Model):
30 employee_id = models.AutoField(primary_key=True)
31 last_name = models.CharField(max_length=20)
32 first_name = models.CharField(max_length=20)
33 title = models.CharField(max_length=30, blank=True, null=True)
34 reports_to = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, db_column='reports_to')
35 birth_date = models.DateTimeField(blank=True, null=True)
36 hire_date = models.DateTimeField(blank=True, null=True)
37 deleted_at = models.DateTimeField(null=True, blank=True)
38
39 def __str__(self):
40 return f"{self.first_name} {self.last_name}"
41
42 class Meta:
43 db_table = 'employee'
44
45
46class Customer(models.Model):
47 customer_id = models.AutoField(primary_key=True)
48 first_name = models.CharField(max_length=40)
49 last_name = models.CharField(max_length=20)
50 company = models.CharField(max_length=80, blank=True, null=True)
51 support_rep = models.ForeignKey(Employee, on_delete=models.SET_NULL, blank=True, null=True,
52 db_column='support_rep_id')
53 deleted_at = models.DateTimeField(null=True, blank=True)
54
55 def __str__(self):
56 return f"{self.first_name} {self.last_name}"
57
58 class Meta:
59 db_table = 'customer'
60
61
62class Genre(models.Model):
63 genre_id = models.AutoField(primary_key=True)
64 name = models.CharField(max_length=120, blank=True, null=True)
65 deleted_at = models.DateTimeField(null=True, blank=True)
66
67 def __str__(self):
68 return self.name or "Unknown Genre"
69
70 class Meta:
71 db_table = 'genre'
72
73
74class MediaType(models.Model):
75 media_type_id = models.AutoField(primary_key=True)
76 name = models.CharField(max_length=120, blank=True, null=True)
77 deleted_at = models.DateTimeField(null=True, blank=True)
78
79 def __str__(self):
80 return self.name or "Unknown Media"
81
82 class Meta:
83 db_table = 'media_type'
84
85
86class Track(models.Model):
87 track_id = models.AutoField(primary_key=True)
88 name = models.CharField(max_length=200)
89 album = models.ForeignKey(Album, on_delete=models.SET_NULL, blank=True, null=True, db_column='album_id')
90 media_type = models.ForeignKey(MediaType, on_delete=models.CASCADE, db_column='media_type_id')
91 genre = models.ForeignKey(Genre, on_delete=models.SET_NULL, blank=True, null=True, db_column='genre_id')
92 composer = models.CharField(max_length=220, blank=True, null=True)
93 milliseconds = models.IntegerField()
94 bytes = models.IntegerField(blank=True, null=True)
95 deleted_at = models.DateTimeField(null=True, blank=True)
96
97 def __str__(self):
98 return self.name
99
100 class Meta:
101 db_table = 'track'
102
103
104class Invoice(models.Model):
105 invoice_id = models.AutoField(primary_key=True)
106 customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, db_column='customer_id', null=True)
107 invoice_date = models.DateTimeField()
108 billing_address = models.CharField(max_length=70, blank=True, null=True)
109 billing_city = models.CharField(max_length=40, blank=True, null=True)
110 billing_state = models.CharField(max_length=40, blank=True, null=True)
111 billing_country = models.CharField(max_length=40, blank=True, null=True)
112 billing_postal_code = models.CharField(max_length=10, blank=True, null=True)
113 total = models.DecimalField(max_digits=10, decimal_places=2)
114 deleted_at = models.DateTimeField(null=True, blank=True)
115
116 def __str__(self):
117 return f"Invoice #{self.invoice_id}"
118
119 class Meta:
120 db_table = 'invoice'
121 managed = False
122
123
124class InvoiceLine(models.Model):
125 invoice_line_id = models.AutoField(primary_key=True)
126 invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE, db_column='invoice_id')
127 track = models.ForeignKey(Track, on_delete=models.CASCADE, db_column='track_id')
128 quantity = models.IntegerField()
129 deleted_at = models.DateTimeField(null=True, blank=True)
130
131 class Meta:
132 db_table = 'invoice_line'
133 managed = False
134
135
136class Playlist(models.Model):
137 playlist_id = models.AutoField(primary_key=True)
138 name = models.CharField(max_length=120, blank=True, null=True)
139 deleted_at = models.DateTimeField(null=True, blank=True)
140
141 def __str__(self):
142 return self.name or f"Playlist {self.playlist_id}"
143
144 class Meta:
145 db_table = 'playlist'
146
147
148class PlaylistTrack(models.Model):
149 id = models.AutoField(primary_key=True)
150 playlist = models.ForeignKey(Playlist, on_delete=models.CASCADE, db_column='playlist_id')
151 track = models.ForeignKey(Track, on_delete=models.CASCADE, db_column='track_id')
152 deleted_at = models.DateTimeField(null=True, blank=True)
153
154 class Meta:
155 db_table = 'playlist_track'
156 managed = False
157 unique_together = (('playlist', 'track'),)
158
159 def __str__(self):
160 return f"{self.playlist} - {self.track}"
161
162
163class DeletedCustomerLog(models.Model):
164 log_id = models.AutoField(primary_key=True)
165 first_name = models.CharField(max_length=40)
166 last_name = models.CharField(max_length=20)
167 deleted_at = models.DateTimeField()
168 total_spent = models.DecimalField(max_digits=10, decimal_places=2)
169 invoice_count = models.IntegerField()
170 deleted_at = models.DateTimeField(null=True, blank=True)
171
172 class Meta:
173 db_table = 'deleted_customer_log'
174 managed = False
175
176 def __str__(self):
177 return f"{self.first_name} {self.last_name} - Deleted on {self.deleted_at} - Total Spent: ${self.total_spent} from {self.invoice_count} invoices"
178
179
180class Price(models.Model):
181 price_id = models.AutoField(primary_key=True)
182 value = models.DecimalField(max_digits=10, decimal_places=2)
183 date = models.DateTimeField()
184 track_id = models.ForeignKey(Track, on_delete=models.DO_NOTHING, db_column='track_id')
185
186 class Meta:
187 managed = False
188 db_table = 'price'
189
190 def __str__(self):
191 return f"{self.track_id} - {self.value} - {self.date}"
192
193
194class PersonalInfo(models.Model):
195 customer = models.OneToOneField(Customer, on_delete=models.CASCADE, related_name='personalinfo')
196 address = models.CharField(max_length=255)
197 city = models.CharField(max_length=100)
198 state = models.CharField(max_length=100, blank=True, null=True)
199 country = models.CharField(max_length=100)
200 postal_code = models.CharField(max_length=20, blank=True, null=True)
201 phone = models.CharField(max_length=20, blank=True, null=True)
202
203 class Meta:
204 managed = False
205 db_table = 'personalinfo'
206 def __str__(self):
207 return f"Personal info for {self.customer.first_name} {self.customer.last_name}"
Note: See TracBrowser for help on using the repository browser.