On Tuesday, July 30, 2019 at 11:12:26 AM UTC-7, Kimus wrote:
>
> bem tenho o seguinte problema dessa vez, estou tentando criar a primeira 
> tabela com relacionamento, só que não to conseguindo inserir nd dos dados 
> na tabela pq ele fica dando esse erro "long() argument must be a string or 
> a number, not 'list' 
> meu controller 
> @auth.requires_login()
> def CadastroPropriedade():
> formulario = db.PropriedadeRural.insert(area=request.vars.area)
> return dict(mensagem=" ")
> meu BD : 
> propriedadeRural = db.define_table('PropriedadeRural'
> ,Field('area','integer',label='Area de platação')
> ,Field('ano','date',label='ano da colheita')
> ,Field('lavoura','string',label='Tipo de cultivo')
> ,Field('producao','integer',label='Produção em sacos')
> ,Field('valorProducao','integer',label='Receita de Venda')
> ,Field('agricultor','references auth_user',label='Dono Da Lavoura'))
>
> e o erro completo:
>
> Número do Ticket
>
> 127.0.0.1.2019-07-30.12-01-32.d039c906-1e98-41a0-8ae5-e0657181b244
> <type 'exceptions.TypeError'> long() argument must be a string or a 
> number, not 'list'Versão
> web2py™ Version 2.18.5-stable+timestamp.2019.04.08.04.22.03
> Python Python 2.7.15+: /usr/bin/python (prefix: /usr)Traceback
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
> 11.
> 12.
> 13.
> 14.
> 15.
> 16.
> 17.
> 18.
> 19.
> 20.
> 21.
> 22.
> 23.
> 24.
> 25.
> 26.
> 27.
> 28.
> 29.
> 30.
> 31.
> 32.
> 33.
> 34.
> 35.
> 36.
>
> Traceback (most recent call last):
>   File "/home/nti/Área de Trabalho/web2py/gluon/restricted.py", line 219, in 
> restricted
>     exec(ccode, environment)
>   File "/home/nti/Área de 
> Trabalho/web2py/applications/ProjetoMargem/controllers/template.py" 
> <http://127.0.0.1:8000/admin/default/edit/ProjetoMargem/controllers/template.py>,
>  line 66, in <module>
>   File "/home/nti/Área de Trabalho/web2py/gluon/globals.py", line 421, in 
> <lambda>
>     self._caller = lambda f: f()
>   File "/home/nti/Área de Trabalho/web2py/gluon/tools.py", line 3869, in f
>     return action(*a, **b)
>   File "/home/nti/Área de 
> Trabalho/web2py/applications/ProjetoMargem/controllers/template.py" 
> <http://127.0.0.1:8000/admin/default/edit/ProjetoMargem/controllers/template.py>,
>  line 21, in CadastroPropriedade
>     formulario = db.PropriedadeRural.insert(area=request.vars.area)
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/objects.py", line 762, in insert
>     ret = self._db._adapter.insert(self, row.op_values())
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/adapters/base.py", line 480, in 
> insert
>     query = self._insert(table, fields)
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/adapters/base.py", line 476, in 
> _insert
>     ','.join(self.expand(v, f.type) for f, v in fields))
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/adapters/base.py", line 476, in 
> <genexpr>
>     ','.join(self.expand(v, f.type) for f, v in fields))
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/adapters/base.py", line 445, in 
> _expand
>     rv = self.represent(expression, field_type)
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/adapters/base.py", line 382, in 
> represent
>     return super(SQLAdapter, self).represent(obj, field_type)
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/adapters/base.py", line 336, in 
> represent
>     return self.representer.represent(obj, field_type)
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/representers/__init__.py", line 251, 
> in represent
>     rv = self.get_representer_for_type(field_type)(rv, field_type)
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/representers/__init__.py", line 139, 
> in __call__
>     return self.adapt(self.call(value, field_type))
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/representers/__init__.py", line 136, 
> in _call
>     return self.inner_call(value)
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/representers/__init__.py", line 124, 
> in _inner_call
>     return self.obj.f(self.representer, value, **kwargs)
>   File "/home/nti/Área de 
> Trabalho/web2py/gluon/packages/dal/pydal/representers/base.py", line 30, in 
> _integer
>     return str(long(value))
> TypeError: long() argument must be a string or a number, not 'list'
>
> Momento do Erro [image: help] 
> <http://127.0.0.1:8000/admin/default/ticket/ProjetoMargem/127.0.0.1.2019-07-30.12-01-32.d039c906-1e98-41a0-8ae5-e0657181b244#>
>
> <type 'exceptions.TypeError'>(long() argument must be a string or a 
> number, not 'list')
>
>
>

Normally, request.vars.something is a string, and you should do a type 
conversion.  You didn't provide a sample URL for the request, so I'm 
guessing that your URL was something like 
my_app/my_controller/my_function?area=3,5 and the comma (',') turns one 
string into two, hence a list.

If that comma is a decimal point (which is true in many locale setttings), 
then you need to decide whether to use a dot (period, '.') instead, or have 
your borwwser translate to a dot via locale processing, or just deal with a 
list.  You still have to convert to a number

#
# for dots
#
area = decimal(request.vars.area)

#
# for a "list"
#
x, y = request.vars.area.split(',')
area = decimal(x)/decimal(y)


Good luck!

/dps

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/5d94a9da-d146-433f-bb42-4e47bff342f6%40googlegroups.com.

Reply via email to