Coverage for account/models.py: 90.00%
20 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 17:07 -0700
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-13 17:07 -0700
1from django.conf import settings
2from django.contrib.auth import get_user_model
3from django.db import models
6class Profile(models.Model):
7 user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
8 date_of_birth = models.DateField(blank=True, null=True)
9 photo = models.ImageField(upload_to="users/%Y/%m/%d/", blank=True)
11 def __str__(self):
12 return f"Profile of {self.user.username}"
15class Contact(models.Model):
16 user_from = models.ForeignKey(
17 "auth.User", related_name="rel_from_set", on_delete=models.CASCADE
18 )
19 user_to = models.ForeignKey(
20 "auth.User", related_name="rel_to_set", on_delete=models.CASCADE
21 )
22 created = models.DateTimeField(auto_now_add=True)
24 class Meta:
25 indexes = [
26 models.Index(fields=["-created"]),
27 ]
28 ordering = ["-created"]
30 def __str__(self):
31 return f"{self.user_from} follows {self.user_to}"
34# Add following field to User dynamically
35user_model = get_user_model()
36user_model.add_to_class(
37 "following",
38 models.ManyToManyField(
39 "self", through=Contact, related_name="followers", symmetrical=False
40 ),
41)