我的问题很简单:我有Users谁拥有Assets or Assets属于用户的如果您愿意,但我无法检索其数量(计数)Assets each User有。我知道这对你们大多数人来说可能听起来很愚蠢,但我是 python/django (来自 PHP/MySQL)的新手,我不知道这里的事情是如何工作的。我不想使用原始 SQL - 如果没有其他办法的话,这将是我的最后选择。
(*) 我已经从代码中删除了所有不相关的原始数据
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.id }}</td>
<td>
{{ user_assets }}
</td>
</tr>
{% endfor %}
我怎样才能得到那个号码?我读过有关聚合、注释和过滤器的内容,但无法真正理解。
EDIT:
我正在寻找一个简单的解决方案,通过使用基于类的视图并且易于扩展(我可能想稍后添加其他模型)