Запрос с использованием связанного имени в django

У меня есть две модели:

class User(models.Model):
    email = models.EmailField()
    name = models.CharField(max_length=255)
    password = models.CharField(max_length=255)

class Profile(models.Model):
    group = models.ForeignKey(User, related_name='profiles')
    image = models.ForeignKey(Media, on_delete=models.CASCADE)
    #more attributes

У меня есть id пользователя, и я хочу получить его изображение.

user = User.objects.get(id=id)
image = user.profiles.image

Выдается ошибка. Как я могу это сделать?

Заранее спасибо.

Причина ошибки заключается в том, что отношение User to Profile является отношением многие-к-одному, поэтому при вызове user.profiles создается кверисет из множества объектов Profile, а не только один. Кверисет профилей не имеет атрибута image.

Вам нужно сделать одно из двух:

a) Извлеките один профиль из набора запросов профилей, например user.profiles.first() - обратите внимание, что если у вас несколько профилей, это просто получит первый профиль из набора по порядку_by модели профиля

b) Установите связь пользователь/профиль как один к одному, а не как много к одному, используя models.OneToOneField. Это позволит вам получить прямой доступ к профилю с помощью user.profile

Получив прямой доступ к объекту профиля, вы можете вызвать имеющийся у него атрибут изображения.

Вернуться на верх