I'm trying to convert a string into an int so that I can keep a running total and would like to be able to output in the django template.
def stats(request):
stats = []
players = Player.objects.all()
for player in players:
player_stats = PlayerStat.objects.filter(player__id=player.pk)
for n,stat in enumerate(player_stats):
if n == 0:
passing_completions = stat.passing_completions
else:
passing_completions += stat.passing_completions
stats.append((player.first_name, player.last_name, player.team, passing_completions))
return render_to_response('preps/stats.html', {'stats': stats, })
I've tried adding int() around stat.passing_completions but then that just throws the error invalid literal for int() with base 10: ''
.
So then I used the isdigit()
method to make sure only strings with digits were trying to be converted like this:
for player in players:
player_stats = PlayerStat.objects.filter(player__id=player.pk)
for n,stat in enumerate(player_stats):
if n == 0:
if stat.passing_completions.isdigit():
passing_completions = int(stat.passing_completions)
else:
if stat.passing_completions.isdigit():
passing_completions += int(stat.passing_completions)
stats.append((player.first_name, player.last_name, player.team, passing_completions))
but then I get the error of Caught TypeError while rendering: 'int' object is not iterable
model Structure
class PlayerStat(models.Model):
player = models.ForeignKey(Player)
week_num = models.CharField(
max_length = 10,
choices = (('1', 'Sep 2nd',), ('2', 'Sep 9th',), ('3', 'Sep 16th',),('4', 'Sep 23rd',), ('5', 'Sep 30th',), ('6', 'Nov 2nd',),('7', 'Nov 7th',), ('8', 'Nov 14th',), ('9', 'Nov 21st',),('10', 'Nov 28th',), ('11', 'Dec 4th',), ('12', 'Dec 11th',), ),
blank = True,
null=True
)
rushing_attempts = models.CharField(
max_length = 100,
verbose_name = "Rushing Attempts",
blank=True
)
rushing_yards = models.CharField(
max_length = 100,
verbose_name = "Rushing Yards",
blank=True
)
rushing_touchdowns = models.CharField(
max_length = 100,
verbose_name = "Rushing Touchdowns",
blank=True
)
passing_completions = models.CharField(
max_length = 100,
verbose_name = "Passing Completions",
blank=True
)
passing_attempts = models.CharField(
max_length = 100,
verbose_name = "Passing Attempts",
blank=True
)
passing_yards = models.CharField(
max_length = 100,
verbose_name = "Passing Yards",
blank=True
)
passing_touchdowns = models.CharField(
max_length = 100,
verbose_name = "Passing Touchdowns",
blank=True
)
receptions = models.CharField(
max_length = 100,
verbose_name = "Receptions",
blank=True
)
receiving_yards = models.CharField(
max_length = 100,
verbose_name = "Receiving Yards",
blank=True
)
receiving_touchdowns = models.CharField(
max_length = 100,
verbose_name = "Receiving Touchdowns",
blank=True
)
Any help would be appreciated.
Thanks
I sometimes use this stupid trick :
a = int('0' + someString)
Adding a zero in front of a string guaranties me to have at least "0" in the string. Now, to be sure, you may extract all the digits from the "'0'+someString" with a regular expression.
I know this is an old question, but if someone needs, here is a small solution I use to convert strings to int without problems:
def int_or_0(value):
try:
return int(value)
except:
return 0
Just it. ;)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With