获取模型过滤器以显示活动值的计数 [英] Getting model filters to show count of active values
本文介绍了获取模型过滤器以显示活动值的计数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有2个已连接的模型。
模型1是 userprofiles ,模型2是 events < br>
每个用户可以有多个事件...每个事件可以处于活动状态或停用状态。
我在模板中有一个for循环,显示了所有用户配置文件...但是我还想显示每个用户有多少活动事件。
today = datetime.now()。strftime ('%Y-%m-%d')
perm = Permission.objects.get(codename ='chef_user')
user_profiles = User.objects.filter(profile__user_profile_active ='y')。filter (is_active = True).filter(Q(groups__permissions = perm)| Q(user_permissions = perm))。distinct()[:6]
在模板中有我的循环
{%for user_profiles中的kitchen_list%}
-代码-
{{kitchen_list.events_set.count}}< ---我想在哪里显示活动事件
--CODE--
{%endfor %}
我的模型:
<$ p $ >
class UserProfile(models.Model):
EVENT_TYPE =(('0', Apartment),('1', Home),)
CURRENCY =((('R', Rand),)
OPTIONS =((('y', Yes),('n', No),)
OPTIONS_USER =(( 'y',是),('n',否),('p',待定),)
user = models.OneToOneField(User,related_name ='profile ')
phone_regex = RegexValidator(regex = r'^ \ +?1?\d {9,12} $',message =电话号码必须以 +999999999格式输入。最多允许15位数字。)
phone = models.CharField(validators = [phone_regex],max_length = 12,default ='',blank = True)#验证者应为列表
货币= models.CharField(max_length = 50,空白= True,默认='R',选择=货币)
bookingpermissions = models.CharField(max_length = 100,blank = True,默认='n',选择= OPTIONS)
title = models.CharField(max_length = 50,default ='',blank = True)
bio = models.TextField(max_length = 500,default ='',blank = True)
city = models.CharField(max_length = 100,default ='',blank = True)
经度= models.CharField(max_length = 100,default ='na',blank = True)
纬度= models.CharField(max_length = 100,默认='na',blank = True)
图片= ResizedImageField(size = [400,400],作物= ['middle','center'],upload_to = 'userprofile / static / images',default ='',blank = True)
kitchen_type = models.CharField(max_length = 50,blank = True,default ='a',choices = EVENT_TYPE)
user_pro file_active = models.CharField(max_length = 1,default ='n',blank = True,choices = OPTIONS_USER)
class Events(models.Model):
ACTIVE =((('d', Deactivated),('e', Expired),('a', Active),('b', Drafts),)
ALCOHOL =((('0','No带自己的酒'),('1','将有免费的葡萄酒搭配')))
user = models.ForeignKey(User,on_delete = models .CASCADE)
活动=模型.CharField(max_length = 1,默认='b',选择=活动)
标题=模型.CharField(max_length = 50,空白= True,默认='')
description = models.TextField(max_length = 500,blank = True,default ='')
date = models.DateField()
time = models.TimeField()
价格= models.CharField(max_length = 240,blank = True,default ='')
座位= models.IntegerField()
alcohol_choice = models.CharField(max_length = 1,default ='n',选择= ALCOHOL)
starter = models.TextField(max_length = 350,blank = True,默认='')
main_m enu = models.TextField(max_length = 350,blank = True,默认='')
甜点= models.TextField(max_length = 350,blank = True,default ='')
注意=模型。 TextField(max_length = 350,blank = True,default ='')
created_date = models.DateTimeField(auto_now_add = True)
modified_date = models.DateTimeField(auto_now = True)
def __unicode __(self):
return self.title
解决方案
您可以尝试在模型中使用模型属性
class UserProfile(models.Model):
#您在此处编码
@property
def active_events(self):
返回self.user.events_set.filter(active =' a')。count()
在模板中:
{{kitchen_list.userprofile.active_events}}
I have 2 models that are connected.
Model 1 is userprofiles and model 2 is events
each user can have multiple events... each event can be active or deactivated.
I have a for loop in the template showing all the userprofiles... but I also want to show how many active events each user has.
today = datetime.now().strftime('%Y-%m-%d')
perm = Permission.objects.get(codename='chef_user')
user_profiles = User.objects.filter(profile__user_profile_active='y').filter(is_active=True).filter(Q(groups__permissions=perm) | Q(user_permissions=perm)).distinct()[:6]
in the template I have my loop
{% for kitchen_list in user_profiles %}
-- CODE --
{{ kitchen_list.events_set.count }} <--- WHERE I AM TRYING TO SHOW ACTIVE EVENTS COUNT
--CODE--
{% endfor %}
my models:
class UserProfile(models.Model):
EVENT_TYPE = (('0', "Apartment"), ('1', "Home"),)
CURRENCY = (('R', "Rand"),)
OPTIONS = (('y', "Yes"),('n', "No"),)
OPTIONS_USER = (('y', "Yes"), ('n', "No"),('p', "Pending"),)
user = models.OneToOneField(User, related_name='profile')
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,12}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.")
phone = models.CharField(validators=[phone_regex], max_length=12, default='', blank=True) # validators should be a list
currency = models.CharField(max_length=50, blank=True, default='R', choices=CURRENCY)
bookingpermissions = models.CharField(max_length=100, blank=True, default='n', choices=OPTIONS)
title = models.CharField(max_length=50, default='', blank=True)
bio = models.TextField(max_length=500, default='', blank=True)
city = models.CharField(max_length=100, default='', blank=True)
longitude = models.CharField(max_length=100, default='na', blank=True)
latitude = models.CharField(max_length=100, default='na', blank=True)
image = ResizedImageField(size=[400, 400], crop=['middle', 'center'], upload_to='userprofile/static/images', default='', blank=True)
kitchen_type = models.CharField(max_length=50, blank=True, default='a', choices=EVENT_TYPE)
user_profile_active = models.CharField(max_length=1, default='n', blank=True, choices=OPTIONS_USER)
class Events(models.Model):
ACTIVE = (('d', "Deactivated"), ('e', "Expired"), ('a', "Active"), ('b', "Drafts"),)
ALCOHOL = (('0','No bring own alcohol'),('1','There will be complimentary wine pairing'))
user = models.ForeignKey(User, on_delete=models.CASCADE)
active = models.CharField(max_length=1, default='b', choices=ACTIVE)
title = models.CharField(max_length=50, blank=True, default='')
description = models.TextField(max_length=500, blank=True, default='')
date = models.DateField()
time = models.TimeField()
price = models.CharField(max_length=240, blank=True, default='')
seats = models.IntegerField()
alcohol_choice = models.CharField(max_length=1, default='n' ,choices=ALCOHOL)
starter = models.TextField(max_length=350, blank=True, default='')
main_menu = models.TextField(max_length=350, blank=True, default='')
dessert = models.TextField(max_length=350, blank=True, default='')
notes = models.TextField(max_length=350, blank=True, default='')
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.title
解决方案
you can try use model propery
in model:
class UserProfile(models.Model):
# You code here
@property
def active_events(self):
return self.user.events_set.filter(active='a').count()
in template:
{{ kitchen_list.userprofile.active_events }}
这篇关于获取模型过滤器以显示活动值的计数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文