MU
Ақп. 20, 2019, 8:11 Т.Қ.

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

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

4
Evgenii Legotckoi
  • Ақп. 20, 2019, 8:29 Т.Қ.

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
    • Ақп. 20, 2019, 8:52 Т.Қ.

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

      Evgenii Legotckoi
      • Ақп. 20, 2019, 8:57 Т.Қ.

      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
        • Ақп. 20, 2019, 9:06 Т.Қ.
        • Жауап шешім ретінде белгіленді.

        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)

          Пікірлер

          Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
          Кіріңіз немесе Тіркеліңіз