Boky
Boky

Reputation: 12054

Django getting database fields with one query

I have a few models in django (User(standard), Member(extended user), Calculations, Subscription, Type) as follows :

class Member(models.Model):
    user = models.ForeignKey(to=User)
    ..........

class Calculations(models.Model):
    user = models.ForeignKey(to=User)
    .....

class Type(models.Model):
    limit = models.IntegerField()
    name = models.CharField(max_length=50)
    default = models.BooleanField()


class Subscription(models.Model):
    started = models.DateField()
    type = models.ForeignKey(Type)
    member = models.OneToOneField(Member)

Thus,

In my view I want to query the database and to access information from all those models.

Thus I want all members except the currently logged in, and I want to get the number of the calculations and the type of the subscription.

I'm trying to do it with one query.

I tried something like :

@login_required
def members(request):
    // That's how I get all information about user and members, but I also need the calculation and subscription
    members_list = Member.objects.select_related('user').all().exclude(user=request.user)
    context = {'members': members_list}
    return render(request, 'master/members.html', context)

Any advice how can I do that?

Upvotes: 1

Views: 38

Answers (1)

Marin
Marin

Reputation: 1121

Access all elements from related Models.

qv = Member.objects.exclude(user=request.user).values('user__subscription__started', 'user', 'user__calculations__user')

Upvotes: 2

Related Questions