My problem is simple: I have **Users** who own **Assets** or **Assets** which belong to Users If you prefer and I cannot make it to retrieve the number (count) of **Assets** each **User** has. I know this might be sound silly to most of you but I am new to python/django (coming from PHP/MySQL) and I do not know how things work here. I do not want to be engaged with raw SQL - this would be my last choice If nothing else works.
(*) I have removed all non-related raws from the code
**Users**
class Users(models.Model):
firstname = models.CharField(max_length=100)
lastname = models.CharField(max_length=100)
**Assets**
class Assets(models.Model):
serial = models.CharField(unique=True, max_length=100)
user = models.ForeignKey('Users', blank=True, null=True)
# this is what I am playing with to retrieve the number of assets each user owns
@classmethod
def user_assets(self):
return Assets.objects.filter(user=user).count()
**views.py**
class UserList(ListView):
model = Users
def get_context_data(self, **kwargs):
context = super(UserList, self).get_context_data(**kwargs)
context['user_assets'] = self.model.user_assets()
return context
**template**
{% for user in object_list %}
<tr>
<td>
{{ user_assets }}
</td>
</tr>
{% endfor %}
How can I get that number? I have read about aggregations, annotations and filters but can't really get it.
I am looking for a simple solution by using class based views and easily expandable (I may want to add other models later)