Запрос к пользовательской модели пользователя Django с полем "многие-ко-многим

Я очень новичок в Django. У меня есть пользовательская модель пользователя:
accounts\models.py:

from django.contrib.auth.models import AbstractUser
from django.db import models
from tradestats.models import Webhook


class CustomUser(AbstractUser):
    webhook = models.ManyToManyField(Webhook, blank=True)

У меня есть приложение tradestats с моделью Webhook:
tradestats\models.py

from django.db import models


class Webhook(models.Model):
    id = models.UUIDField(
        primary_key=True,
        default=uuid.uuid4,
        editable=False,
    )
    name = models.CharField(verbose_name='Webhooks name', max_length=50, null=False, blank=False)
    url = models.URLField(max_length=255, null=False, blank=False, unique=True)

    def __str__(self):
        return self.name

    class Meta:
        ordering = ['name']

У меня есть представление, основанное на классе. В этом представлении я хочу запросить у вошедшего пользователя все поле Webhooks url и передать в render() в качестве контекста.
tradestats\view.py:

           context = {
                'form': form.cleaned_data,
                'variable': value1,
                'variable2': value2,
            }
            return render(request, template_name='renko/renko_calculate.html', context=context)

Как я могу запросить webhook.urls и передать в контекст? Большое спасибо.

Попробуйте следующее:

user = CustomUser.objects.get(id=request.user.id)
context = {
   ...         
   'webhooks': user.webhook
}
...

Я пробовал, но:
у объекта 'CustomUser' нет атрибута 'webhook'
. Я установил debug_toolbar и изучил SQL querry.

SELECT "accounts_customuser"."id",
       "accounts_customuser"."password",
       "accounts_customuser"."last_login",
       "accounts_customuser"."is_superuser",
       "accounts_customuser"."username",
       "accounts_customuser"."first_name",
       "accounts_customuser"."last_name",
       "accounts_customuser"."email",
       "accounts_customuser"."is_staff",
       "accounts_customuser"."is_active",
       "accounts_customuser"."date_joined"
  FROM "accounts_customuser"
 WHERE "accounts_customuser"."id" = 1
 LIMIT 21

Я не видел поиска полей в вебхуке.
Я попробовал с помощью shell:

python manage.py shell
Python 3.10.5 (main, Jun  7 2022, 19:23:05) [GCC 11.2.1 20220219] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from accounts.models import CustomUser
>>> from tradestats.models import Webhook
>>> CustomUser.objects.get(id=1).username
'admin'
CustomUser.objects.get(id=1).webhook
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'CustomUser' object has no attribute 'webhook'

Update:
. Это была моя ошибка. webhook не существует, но webhooks.
. Это работает:

user = CustomUser.objects.get(id=request.user.id)
context = {
        'webhooks': user.webhooks.all(),
    }

    return render(request, template_name='tradestats/webhook.html', context=context)

Я добавляю .all() в конце вашего кода для итерации в шаблоне.

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