我在模板中的代码是这样的:
{% for item in items %}
{{ item.somefield }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
如果item.somefield不是None,我想显示项值,或者显示空字符串.我不想使用{%if item.somefield%}语句,我想要{{item.somefield或''}}之类的东西(我试过这个但是它不起作用)
我的代码是这样的:我自定义我的上下文,并希望在模板中访问我的查询集
class GetStudentQueryHandler(ListView):
template_name = 'client.html'
paginate_by = STUDENT_PER_PAGE
context_object_name = 'studentinfo'
def get_context_data(self, **kwargs):
context = super(GetStudentQueryHandler, self).get_context_data(**kwargs)
context['can_show_distribute'] = self.request.user.has_perm('can_show_distribute_page')
context['form'] = QueryStudentForm
return context
def get_queryset(self):
Run Code Online (Sandbox Code Playgroud)
问题是:如何访问模板中get_queryset方法返回的查询集?我知道我可以访问自定义属性,如studentinfo.can_show_distribute,如何访问查询数据?
大家好,我需要你的python列表排序帮助.
这是事情:
我有两个列表:一个是整数列表,另一个是对象列表,第二个对象列表的属性id也是一个整数,我想根据id属性对对象列表进行排序,在第一个列表中出现了相同id的顺序,这是一个例子:
我得了= [1,2,3,4,5]
和b = [o,p,q,r,s],其中o.id = 2,p.id = 1,q.id = 3,r.id = 5,s.id = 4
并且我希望我的列表b按照其ID出现在列表a中的顺序排序,如下所示:sorted_b = [p,o,q,s,r]
当然,我可以通过使用嵌套循环来实现这一点:
sorted_b = []
for i in a:
for j in b:
if j.id == i:
sorted_b.append(j)
break
Run Code Online (Sandbox Code Playgroud)
但这是解决问题的经典丑陋和非蟒蛇方式,我想知道是否有一种方法可以用一种相当简洁的方式解决这个问题,比如使用排序方法,但我不知道怎么做.我搜索了我的问题,但找不到确切的答案,所以我需要你的帮助,谢谢:)
我想创建一个队列来存储我的任务,我希望它是一个缓冲区队列,我想使用信号量来保持线程安全,因为我使用多个线程来执行从任务队列中弹出的任务。 .当队列的大小小于buffer_size(我定义的一个变量)时,add_task线程会将新任务推送到任务队列,当队列满时,任务线程会被阻塞,所以我需要一个信号量最大值等于 buffer_size。
我知道在 windows api 中有 CreateSemophore,我可以在其中设置信号量的最大值:
CreateSemaphore(
NULL, // default security attributes
MAX_SEM_COUNT, // initial count
MAX_SEM_COUNT, // maximum count
NULL); // unnamed semaphore
Run Code Online (Sandbox Code Playgroud)
但是在linux中,我只能得到sem_init函数:
int sem_init (sem_t *sem, int pshared, unsigned int value)
Run Code Online (Sandbox Code Playgroud)
我只能设置初始值,但据说最大值是int的范围..
所以我的问题是如何在 Linux 上的 C++ 中创建一个具有最大值的信号量?