title: TypeError: 'str' object is not callable in Django 1.10 Admin change_form.html {{ original|truncatewords:"18" }}
body: <p>I've had this a couple of times and not been able to debug  it. Last time I regressed code to my last checkin to avoid it but it remains a mystery.</p>
  
  <p>Situation occurs when I use the standard admin app to view/edit my custom objects. I can see the objects listed in the view (in my case 
      <a href="http://127.0.0.1:8000/admin/athletes/totalsandstats/" rel="nofollow noreferrer">http://127.0.0.1:8000/admin/athletes/totalsandstats/</a>
  where athletes is my app name, and TotalsAndStats is a model defined within athletes/models.py). When I click on one of the objects to try and view the details, I get the above exception. </p>
  
  <p>Django Admin is trying to render the URL 
      <a href="http://127.0.0.1:8000/admin/athletes/totalsandstats/2/change/" rel="nofollow noreferrer">http://127.0.0.1:8000/admin/athletes/totalsandstats/2/change/</a> 
  using the template 
      /usr/local/lib/python3.4/site-packages/django/contrib/admin/templates/admin/change_form.html</p>
  
  <p>The error page states that the exception occurred at line 21 in the template, which is this:</p>
  
  <pre><code>&amp;rsaquo; {% if add %}{% blocktrans with name=opts.verbose_name %}Add {{ name }}{% endblocktrans %}{% else %}{{ original|truncatewords:"18" }}{% endif %} 
  </code></pre>
  
  <p>I see that</p>
  
  <pre><code>{{ original|truncatewords:"18" }} 
  </code></pre>
  
  <p>is highlighted in red so I assume that "original" is not defined correctly. But I don't know what is the purpose of <strong>original</strong>, or how it relates to my model.</p>
  
  <p>I suspect there must be some mismatch between my model and the way I have defined the corresponding admin model, but I can't see it. Perhaps would be helpful if I attach excerpt from the relevant files.</p>
  
  <p>models.py</p>
  
  <pre><code>class TotalsAndStats(models.Model):
      # key will hold &lt;athlete_id&gt;:&lt;period&gt;
      athlete = models.ForeignKey(Athlete, null=False, on_delete=models.CASCADE)
      period = models.CharField(max_length=10, null=False)  # YYYY or 'All-time'
      time_retrieved = models.DateTimeField()
      rides = models.IntegerField()
      distance_km = models.FloatField()
      elevation_m = models.FloatField()
      hours = models.FloatField()
  
      @property
      def __str__(self):
          return str(self.athlete.id) + ":" + self.period
  </code></pre>
  
  <p>admin.py</p>
  
  <pre><code>class TotalsAndStatsAdmin(admin.ModelAdmin):
      fields = ['athlete', 'time_retrieved', 'period', 'rides', 'distance_km',
                'elevation_m', 'hours']
      list_filter = ['athlete']
      ordering = ['time_retrieved']
  </code></pre>
  
  <p>And full details of the exception:</p>
  
  <pre><code>TypeError at /admin/athletes/totalsandstats/2/change/
  
  'str' object is not callable
  
  Request Method:     GET
  Request URL:    http://127.0.0.1:8000/admin/athletes/totalsandstats/2/change/
  Django Version:     1.10
  Exception Type:     TypeError
  Exception Value:    
  
  'str' object is not callable
  
  Exception Location:     /usr/local/lib/python3.4/site-packages/django/utils/encoding.py in force_text, line 76
  Python Executable:  /usr/local/bin/python
  Python Version:     3.4.5
  Python Path:    
  
  ['/usr/src/app/StravaClub',
   '/usr/local/lib/python34.zip',
   '/usr/local/lib/python3.4',
   '/usr/local/lib/python3.4/plat-linux',
   '/usr/local/lib/python3.4/lib-dynload',
   '/usr/local/lib/python3.4/site-packages',
   '/usr/src/app/StravaClub']
  
  Server time:    Sun, 18 Dec 2016 18:14:45 +0000
  </code></pre>
  
  <p>Please help! :-)</p>