hob*_*es3 0 python django django-models django-queryset
标题可能令人困惑,但我不知道如何解释它.这是一个例子.
做这样的事情会更好吗?
class UserType( models.Model ) :
def user_count( self ) :
return self.userprofile_set.count()
Run Code Online (Sandbox Code Playgroud)
或者像这样?
class UserType( models.Model ) :
def user_count( self ) :
# Does "user_types = self" work? I'm not sure.
return UserProfile.filter( user_types = self.pk ).count()
Run Code Online (Sandbox Code Playgroud)
哪里
class UserProfile( models.Model ) :
user_types = models.ManyToManyField( UserType )
Run Code Online (Sandbox Code Playgroud)
UserType.user_count()只返回UserProfile具有特定人物的人数UserType.
对不起,如果这是一个愚蠢,微不足道的问题,但我很好奇.也许一些Django专家可以深入研究实际的SQL性能或东西:-).
他们是一样的.选择你喜欢的任何东西
在我看来,第一个看起来更清洁.第二个似乎有点不正确,因为user_types不是单个pk值.
顺便说一下,建议始终指定related_name属性.
例如,如果它是:
user_types = models.ManyToManyField(UserType, related_name='profiles')
Run Code Online (Sandbox Code Playgroud)
然后:
return self.profiles.count()
Run Code Online (Sandbox Code Playgroud)
看起来更干净.
但是这两个语句生成相同的sql,我们只能说第一个是第二个快捷方式.所以这不是关于sql-performance
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |