from django.db import models from portfolio.account.models import Account class OneToManyModel(models.Model): def fromDict(self, dict): self.__dict__.update(dict) def create(self, dict): new_object = self() new_object.fromDict(dict) new_object.save() return new_object def update(self, dict): self.fromDict(dict) self.save() return self class Meta: abstract = True class Album(OneToManyModel): title = models.CharField(max_length=255) description = models.CharField(max_length=255) image = models.TextField() url_code = models.CharField(max_length=255) user = models.ForeignKey(Account, on_delete=models.DO_NOTHING) class Track(OneToManyModel): title = models.CharField(max_length=255) description = models.CharField(max_length=1000) text = models.TextField() image = models.TextField() audio = models.TextField() url_code = models.CharField(max_length=255) album = models.ForeignKey(Album, on_delete=models.CASCADE) user = models.ForeignKey(Account, on_delete=models.CASCADE) class TrackRow(OneToManyModel): row_number = models.IntegerField() group = models.BooleanField() leader = models.BooleanField() link = models.IntegerField(default=None) text = models.TextField(default=None) description = models.TextField(default=None) image = models.TextField(default=None) track = models.ForeignKey(Track, on_delete=models.CASCADE) def toDict(self): if self.link is not None: return { self.row_number: { 'group': self.gruop, 'leader': self.leader, 'link': self.link, 'text': self.text, 'description': None, 'image': None } } else: return { self.row_number: { 'group': self.gruop, 'leader': self.leader, 'link': None, 'text': None, 'description': self.description, 'image': self.image } }