i having trouble passing function parameter function. code:
ga.py:
def display_pageviews(hostname): pageviews_results = get_pageviews_query(service, hostname).execute() if pageviews_results.get('rows', []): pv = pageviews_results.get('rows') return pv[0] else: return none def get_pageviews_query(service, hostname): return service.data().ga().get( ids=view_id, start_date='7daysago', end_date='today', metrics='ga:pageviews', sort='-ga:pageviews', filters='ga:hostname==%s' % hostname,)
models.py:
class stats(models.model): user = models.onetoonefield('auth.user') views = models.integerfield() visits = models.integerfield() unique_visits = models.integerfield()
updatestats.py:
class command(basecommand): def handle(self, *args, **options): users = user.objects.all() try: user in users: hostname = '%s.%s' % (user.username, settings.network_domain) stats = stats.objects.update_or_create( user=user, views=display_pageviews(hostname), visits=display_visits(hostname), unique_visits=display_unique_visits(hostname),) except fielderror: print ('there field error.')
when run this: python manage.py updatestats
error:
typeerror: int() argument must string, bytes-like object or number, not 'list'
i don't know what's causing this. i've tried converting string, same error. ideas?
full traceback:
traceback (most recent call last): file "manage.py", line 20, in <module> execute_from_command_line(sys.argv) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line utility.execute() file "/users/myusername/project/dev/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute self.fetch_command(subcommand).run_from_argv(self.argv) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv self.execute(*args, **cmd_options) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute output = self.handle(*args, **options) file "/users/myusername/project/dev/project_files/project/main/management/commands/updatestats.py", line 23, in handle unique_visits=display_unique_visits(hostname),) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/manager.py", line 122, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/query.py", line 480, in update_or_create obj = self.get(**lookup) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/query.py", line 378, in clone = self.filter(*args, **kwargs) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/query.py", line 790, in filter return self._filter_or_exclude(false, *args, **kwargs) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/query.py", line 808, in _filter_or_exclude clone.query.add_q(q(*args, **kwargs)) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1243, in add_q clause, _ = self._add_q(q_object, self.used_aliases) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1269, in _add_q allow_joins=allow_joins, split_subq=split_subq, file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1203, in build_filter condition = self.build_lookup(lookups, col, value) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1099, in build_lookup return final_lookup(lhs, rhs) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/lookups.py", line 19, in __init__ self.rhs = self.get_prep_lookup() file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/lookups.py", line 57, in get_prep_lookup return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 1860, in get_prep_lookup return super(integerfield, self).get_prep_lookup(lookup_type, value) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 744, in get_prep_lookup return self.get_prep_value(value) file "/users/myusername/project/dev/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 1854, in get_prep_value return int(value) typeerror: int() argument must string, bytes-like object or number, not 'list'
edit:
alright, understand issue is. used shell type of function output:
>>> type(display_pageviews('test.domain.com')) <class 'list'>
i tried still considered list:
pv = pageviews_results.get('rows')[0] return pv
what error telling, can't convert entire list integer. index list , convert integer:
x = ["0", "1", "2"] y = int(x[0]) #accessing zeroth element
if trying convert whole list integer, going have convert list string first:
x = ["0", "1", "2"] y = str(''.join(x))# converting list string z = int(y)
as stated above, make sure you're not returning nested list.
Comments
Post a Comment