source: music/models.py@ 7e15c72

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

django models update

  • Property mode set to 100644
File size: 7.2 KB
RevLine 
[d7662b5]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)
[d93daa3]7 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]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')
[d93daa3]20 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]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)
[d93daa3]37 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]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)
[d93daa3]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)
[d7662b5]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)
[d93daa3]65 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]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)
[d93daa3]77 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]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)
[d93daa3]95 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]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)
[d715225]106 customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, db_column='customer_id', null=True)
[d7662b5]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)
[d93daa3]114 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]115
116 def __str__(self):
117 return f"Invoice #{self.invoice_id}"
118
119 class Meta:
120 db_table = 'invoice'
[75ea229]121 managed = False
[d7662b5]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()
[d93daa3]129 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]130
131 class Meta:
132 db_table = 'invoice_line'
[75ea229]133 managed = False
[d7662b5]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)
[d93daa3]139 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]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')
[d93daa3]152 deleted_at = models.DateTimeField(null=True, blank=True)
[d7662b5]153
154 class Meta:
155 db_table = 'playlist_track'
[75ea229]156 managed = False
[d7662b5]157 unique_together = (('playlist', 'track'),)
158
159 def __str__(self):
160 return f"{self.playlist} - {self.track}"
[d1a8cb0]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()
[d715225]168 total_spent = models.DecimalField(max_digits=10, decimal_places=2)
169 invoice_count = models.IntegerField()
[d93daa3]170 deleted_at = models.DateTimeField(null=True, blank=True)
171
[d1a8cb0]172 class Meta:
173 db_table = 'deleted_customer_log'
[75ea229]174 managed = False
[d1a8cb0]175
176 def __str__(self):
[d715225]177 return f"{self.first_name} {self.last_name} - Deleted on {self.deleted_at} - Total Spent: ${self.total_spent} from {self.invoice_count} invoices"
[75ea229]178
[d93daa3]179
[75ea229]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):
[d93daa3]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.