Advertisement
Guest User

Untitled

a guest
Jan 6th, 2021
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.84 KB | None | 0 0
  1. class User(AbstractUser):
  2.     USERNAME_FIELD = 'email'
  3.  
  4.     def __str__(self):
  5.         return f'{self.email}, #{self.id}'
  6.  
  7.  
  8. class Subscription(models.Model):
  9.     author_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
  10.     author_id = models.PositiveIntegerField()
  11.     author_object = GenericForeignKey('author_type', 'author_id')
  12.  
  13.     subscriber = models.ForeignKey(AUTH_USER_MODEL, related_name='subscriptions',
  14.                                    on_delete=models.CASCADE)
  15.     datetime_committed = models.DateTimeField(auto_now_add=True)
  16.  
  17.     class Meta:
  18.         ordering = ['-datetime_committed']
  19.  
  20.  
  21. class Notification(models.Model):
  22.     content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
  23.     object_id = models.PositiveIntegerField()
  24.     content_object = GenericForeignKey('content_type', 'object_id')
  25.  
  26.     creation_date_time = models.DateTimeField(auto_now_add=True)
  27.  
  28.     def __str__(self):
  29.         return f'Оповещение о новом релизе {self.content_object.name}'
  30.  
  31.     class Meta:
  32.         ordering = ['-creation_date_time']
  33.  
  34.  
  35.  
  36. class Artist(models.Model):
  37.     name = models.CharField(max_length=256)
  38.     spotify_id = models.CharField(max_length=256, unique=True)
  39.  
  40.     subscription = GenericRelation(Subscription, related_query_name='artist')
  41.  
  42.     def __str__(self):
  43.         return f'{self.name}, #{self.pk}'
  44.  
  45.  
  46. class Album(models.Model):
  47.     album_types = (
  48.         ('album', 'album'),
  49.         ('single', 'single')
  50.     )
  51.     name = models.CharField(max_length=256)
  52.     spotify_id = models.CharField(max_length=256, unique=True)
  53.     release_date = models.DateField()
  54.  
  55.     notification = GenericRelation(Notification, related_query_name='album')
  56.  
  57.     def __str__(self):
  58.         return f'{self.name}, #{self.pk}'
  59.  
  60.     class Meta:
  61.         ordering = ['-release_date']
  62.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement