MU
Feb. 20, 2019, 8:11 p.m.

User attendance in app

django, python, Django

Hi, i try to create list of users attendance in goal app.

But i don't know how to filter user.

I have Goal model:

  1. class Goal(models.Model, Activity):
  2. title = models.CharField(max_length=255, verbose_name='Tytuł')
  3. image = ImageField(blank=True, verbose_name='Tło')
  4. body = HTMLField(verbose_name='Treść')
  5. tags = TaggableManager()
  6. created_at = models.DateTimeField(auto_now_add=True)
  7. author = models.ForeignKey(User, on_delete=models.CASCADE)
  8. slug = AutoSlugField(populate_from='title')
  9.  

and Joined model:

  1. class Joined(models.Model, Activity):
  2. goal = models.ForeignKey(Goal, on_delete=models.CASCADE, related_name='joined')
  3. user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='joined_users')
  4. created_at = models.DateTimeField(auto_now_add=True)
  5. joined = models.BooleanField(default=False)
  6.  

I try:

  1. def goalusers(request, slug):
  2. goal = get_object_or_404(Goal, slug=slug)
  3.  
  4. users = goal.joined_users.all()
  5.  
  6. return render(request, 'goals/users.html',
  7. {'goal': goal,
  8. 'users': users})

This makes error: 'Goal' object has no attribute 'joined_users'.

I try also:

  1. users = User.objects.filter(joined_users__joined__in=goal)

but then error is:
'Goal' object is not iterable.

2

Do you like it? Share on social networks!

4
Evgenii Legotckoi
  • Feb. 20, 2019, 8:29 p.m.

Hello,

For second solution try this

  1. users = User.objects.filter(joined_users__joined__in=[goal])

For first solution I think need to use annotate or aggregate methods, but it may be slowly and strongly.

    MU
    • Feb. 20, 2019, 8:52 p.m.

    Now error say: ["Value 'Test' must be True or False."]

      Evgenii Legotckoi
      • Feb. 20, 2019, 8:57 p.m.

      For me it is unexpected error.

      What is 'Test' value? Do you use some object, in which exists some Test variable or member?

      Do you have applied migrations?

        MU
        • Feb. 20, 2019, 9:06 p.m.
        • The answer was marked as a solution.

        Yes, ok I have solution!

        Thank you for directing me about annotate.:)

        Solution is:

        1. users_in = User.objects.filter(joined_users__goal=goal, joined_users__joined=True)

          Comments

          Only authorized users can post comments.
          Please, Log in or Sign up
          • Last comments
          • AK
            April 1, 2025, 11:41 a.m.
            Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
          • Evgenii Legotckoi
            March 9, 2025, 9:02 p.m.
            К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
          • VP
            March 9, 2025, 4:14 p.m.
            Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
          • ИМ
            Nov. 22, 2024, 9:51 p.m.
            Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
          • Evgenii Legotckoi
            Oct. 31, 2024, 11:37 p.m.
            Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup