TypeError:“str”对象在Django 1.10管理更改中不可调用_表单.html{{original | truncatewords:“18”}}

2024-09-30 10:39:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有过几次这种情况,但无法调试。上次我将代码回归到上次签入以避免它,但它仍然是一个谜。在

当我使用标准管理应用程序查看/编辑我的自定义对象时,会出现这种情况。我可以看到视图中列出的对象(在我的例子中 http://127.0.0.1:8000/admin/athletes/totalsandstats/ 其中,运动员是我的应用程序名,TotalsAndStats是运动员内部定义的一个模型/模型.py). 当我点击其中一个对象试图查看详细信息时,我得到了上面的异常。在

Django Admin正在尝试呈现URL http://127.0.0.1:8000/admin/athletes/totalsandstats/2/change/ 使用模板 /usr/local/lib/python3.4/site-packages/django/contrib/admin/templates/admin/change_表单.html在

错误页面指出,异常发生在模板的第21行,即:

› {% if add %}{% blocktrans with name=opts.verbose_name %}Add {{ name }}{% endblocktrans %}{% else %}{{ original|truncatewords:"18" }}{% endif %} 

我看到了

^{pr2}$

以红色突出显示,所以我认为“原始”没有正确定义。但我不知道原创的目的是什么,也不知道它与我的模型有什么关系。在

我怀疑我的模型和我定义相应管理模型的方式之间一定有一些不匹配,但是我看不到。如果我附上相关文件的摘录也许会有帮助。在

在模型.py在

class TotalsAndStats(models.Model):
    # key will hold <athlete_id>:<period>
    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

在管理员py在

class TotalsAndStatsAdmin(admin.ModelAdmin):
    fields = ['athlete', 'time_retrieved', 'period', 'rides', 'distance_km',
              'elevation_m', 'hours']
    list_filter = ['athlete']
    ordering = ['time_retrieved']

以及例外情况的全部细节:

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

请帮忙!:-)


Tags: 对象py模型admintimemodelslibusr
1条回答
网友
1楼 · 发布于 2024-09-30 10:39:39

@property不需要修饰符:

class TotalsAndStats(models.Model):

    # ...

    def __str__(self):
        return str(self.athlete.id) + ":" + self.period

相关问题 更多 >

    热门问题