misc: add |getlist filter for querysets (#49400)
This commit is contained in:
parent
1575f91fa1
commit
ac8c2a1acc
|
@ -1213,6 +1213,19 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
assert LazyFormData(formdata).objects.pending().count == 7
|
||||
assert LazyFormData(formdata).objects.pending().filter_by('foo_foo').apply_filter_value('foo').count == 0
|
||||
|
||||
# test |getlist
|
||||
tmpl = Template('{% for v in form_objects|order_by:"id"|getlist:"foo_foo" %}{{ v }},{% endfor %}')
|
||||
assert tmpl.render(context) == 'bar,bar,bar,bar,bar,bar,bar,foo,foo,foo,foo,'
|
||||
tmpl = Template('{% if "foo" in form_objects|getlist:"foo_foo" %}OK{% else %}KO{% endif%}')
|
||||
assert tmpl.render(context) == 'OK'
|
||||
tmpl = Template('{% if "fooooooooooooooo" in form_objects|getlist:"foo_foo" %}OK{% else %}KO{% endif%}')
|
||||
assert tmpl.render(context) == 'KO'
|
||||
assert LazyFormData(formdata).objects.order_by('id').getlist('foo_foo') == [
|
||||
'bar', 'bar', 'bar', 'bar', 'bar', 'bar', 'bar', 'foo', 'foo', 'foo', 'foo']
|
||||
assert LazyFormData(formdata).objects.order_by('id').getlist('form_var_foo_foo') == [
|
||||
'bar', 'bar', 'bar', 'bar', 'bar', 'bar', 'bar', 'foo', 'foo', 'foo', 'foo']
|
||||
assert set(LazyFormData(formdata).objects.getlist('unknown')) == set([None])
|
||||
|
||||
|
||||
def test_lazy_formdata_queryset_get_from_first(pub, variable_test_data):
|
||||
context = pub.substitutions.get_context_variables(mode='lazy')
|
||||
|
|
|
@ -184,6 +184,15 @@ class LazyFormDefObjectsManager(object):
|
|||
get_publisher().record_error(_('Invalid filter "%s"') % self.pending_attr, formdata=self._formdata)
|
||||
return self.none()
|
||||
|
||||
def getlist(self, key):
|
||||
values = []
|
||||
for lazy_formdata in self:
|
||||
value = lazy_formdata.get(key)
|
||||
if value is not None:
|
||||
value = value.get_value()
|
||||
values.append(value)
|
||||
return values
|
||||
|
||||
def __getattr__(self, attribute):
|
||||
if attribute.startswith('count_status_'):
|
||||
# backward compatibility
|
||||
|
|
Loading…
Reference in New Issue