在Django Admin中添加新记录会产生持久性错误

时间:2013-05-14 14:18:39

标签: python django django-admin

我刚开始搞乱Django。我创建了一个新项目和一个新应用程序。在那个应用程序中,我创建了一个模型并激活了管理员这似乎工作正常。然后,我想使用admin向数据库添加一些新记录。在前三个表中,这很好,但在第四个表(称为“ locations ”)中,我收到此错误说:'tuple'对象没有属性'encode' 。完整的错误在于pastebin:http://pastebin.com/WjZat6NN

奇怪的是,当我现在回到常规管理页面并想要点击我刚收到错误的表时,我也得到错误(所以不试图添加任何内容)。

我的问题:为什么会这样?也许我的models.py有问题,所以我也粘贴在这条消息下面。

欢迎所有提示!

from django.db import models

# Create your models here.
class countries(models.Model):
    country = models.CharField(max_length=100)
    def __unicode__(self):
        return self.country

class organisationTypes(models.Model):
    organisationType = models.CharField(max_length=100)
    def __unicode__(self):
        return self.organisationType

class organisations(models.Model):
    organisationName = models.CharField(max_length=200)
    organisationType = models.ForeignKey(organisationTypes)
    countryofOrigin = models.ForeignKey(countries)
    def __unicode__(self):
        return self.organisationName

class locations(models.Model):
    organisation = models.ForeignKey(organisations)
    countryofLocation = models.ForeignKey(countries)
    telNr = models.CharField(max_length=15)
    address = models.CharField(max_length=100)
    def __unicode__(self):
        return self.organisation, self.countryofLocation, self.telNr, self.address

3 个答案:

答案 0 :(得分:2)

下面:

def __unicode__(self):
        return self.organisation, self.countryofLocation, self.telNr, self.address
你回来了一个元组。它需要一个字符串。

将其更改为:

def __unicode__(self):
        return "%s - %s - %s - %s" % (self.organisation self.countryofLocation, self.telNr, self.address)

答案 1 :(得分:1)

问题最有可能出现在这条线上......

return self.organisation, self.countryofLocation, self.telNr, self.address

...您从__unicode__方法返回元组的位置。你需要返回一个字符串对象,尽管它不清楚它应该是什么。也许...

return ', '.join((self.organisation, self.countryofLocation, self.telNr, self.address))

...

答案 2 :(得分:1)

您只能返回一个字符串作为模型实例的代表。

更好用

return self.organisation + '-'+ self.countryofLocation + '-'+self.telNr+'-'+self.address