#python #django #django-models
#python #django #django-модели
Вопрос:
В моих проектах есть два приложения: account_app и image_app, которые имеют приведенные ниже модели.
Мне интересно, возможно ли напрямую получить доступ к количеству лайков одного профиля, который имеет отношение к пользователю OneToOne (django bultin), которое, в свою очередь, имеет отношение ManyToMany к изображениям user_like.
account_app/models.py
class Profile(models.Model):
# quando usar a relacao nao colocar o nome User de vez, tem que usar dessa forma
# essa relacao nos permite linkar o perfil com o usuario
user = models.OneToOneField(settings.AUTH_USER_MODEL)
date_of_birth = models.DateField(blank=True, null=True)
photo = models.ImageField(upload_to='users/%Y/%m/%d', blank=True)
image_app/models.py
class Image(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='images_created')
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, blank=True)
url = models.URLField()
image = models.ImageField(upload_to='images/%Y/%m/%d')
description = models.TextField(blank=True)
created = models.DateField(auto_now_add=True, db_index=True)
users_like = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='images_liked',blank=True)
Ответ №1:
Вы также можете ввести свойство likes
в модель профиля.
class Profile(models.Model):
# quando usar a relacao nao colocar o nome User de vez, tem que usar dessa forma
# essa relacao nos permite linkar o perfil com o usuario
user = models.OneToOneField(settings.AUTH_USER_MODEL)
date_of_birth = models.DateField(blank=True, null=True)
photo = models.ImageField(upload_to='users/%Y/%m/%d', blank=True)
@property
def likes(self):
self.user.images_liked.count()
Ответ №2:
Учитывая экземпляр профиля profile
, вы можете получить количество users_like
с:
number_of_likes = profile.user.images_liked.count()