0

I'm creating school project, Gallery app. I have next entities: Profile, Album, Image, Tag, Like, Comment. But i'm a little bit confused with relations. I created all, but i'm not sure everything is good. Please check:

Profile:

class Profile(models.Model):
    user            = models.OneToOneField(User)
    albums          = models.ManyToManyField("albums.Album", blank=True)
    commented       = models.ManyToManyField("comments.Comment", blank=True, unique=False)
    liked           = models.ManyToManyField("likes.Like", blank=True)
    profile_picture = models.ImageField( blank=True, null=True, upload_to='profile_pics')
    timestamp       = models.DateTimeField(auto_now_add=True)
    updated         = models.DateTimeField(auto_now=True)

Album:

class Album(models.Model):
    name        = models.CharField(max_length=120, blank=False, null=False)
    owner       = models.ForeignKey("profiles.Profile")
    description = models.TextField( max_length=500, null=True)
    images      = models.ManyToManyField("images.Image", related_name="album_images", blank=True)
    is_public   = models.BooleanField(default=False)
    timestamp   = models.DateField(auto_now_add=True)
    updated     = models.DateField(auto_now=True)

Image

class Image(models.Model):
    name        = models.CharField(max_length=120, blank=False, null=True)
    album       = models.ForeignKey("albums.Album", related_name="album_id", null=True, blank=True)
    image       = models.ImageField(verbose_name="Image", blank=True, null=True, upload_to='img')
    description = models.TextField(max_length=500, null=True, blank=True)
    comments    = models.ManyToManyField("comments.Comment", related_name="all_comments", blank=True, unique=False)
    likes       = models.ManyToManyField("likes.Like", related_name="all_likes", blank=True, unique=False)
    tags        = models.ManyToManyField("tags.Tag", related_name="all_tags", blank=True)
    is_public   = models.BooleanField(default=False)
    timestamp   = models.DateField(auto_now_add=True)
    updated     = models.DateField(auto_now=True)

Tags

class Tag(models.Model):
    name      = models.CharField(max_length=120, blank=False, null=False)
    images    = models.ManyToManyField("images.Image", blank=True)
    timestamp = models.DateTimeField(auto_now_add=True)
    updated   = models.DateTimeField(auto_now=True)

Likes

class Like(models.Model):
    owner     = models.ManyToManyField("profiles.Profile")
    image     = models.ManyToManyField("images.Image")
    timestamp = models.DateTimeField(auto_now_add=True)
    updated   = models.DateTimeField(auto_now=True)

Comments

class Comment(models.Model):
    owner     = models.ManyToManyField("profiles.Profile", unique=False)
    image     = models.ManyToManyField("images.Image", unique=False)
    content   = models.TextField(max_length=500, blank=False, null=False)
    timestamp = models.DateTimeField(auto_now_add=True)
    updated   = models.DateTimeField(auto_now=True)

How it looks like to you? Am i wrong somewhere?

М.Б.
  • 1,308
  • 17
  • 20

0 Answers0