from django.db import models from django.contrib.auth.models import AbstractUser from django.utils.functional import cached_property from notes.models import Notebook class User(AbstractUser): pass class Meta: ordering = ['-date_joined'] class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') photo = models.ImageField(upload_to='profile', null=True, blank=True) website = models.CharField(max_length=300, null=True, blank=True, default='') location = models.CharField(max_length=300, null=True, blank=True, default='') bio = models.TextField(null=True, blank=True, default='') #default_note_public = models.BooleanField(default=False) #default_note_folder = models.ForeignKey('notes.Folder', null=True, on_delete=models.SET_NULL) def __str__(self): return self.user.username @cached_property def get_notebook_list(self): return Notebook.objects.filter(owner=self.user).select_related()[:8]