0

我刚开始和 Django 混在一起。我创建了一个新项目和一个新应用程序。在那个应用程序中,我创建了一个模型并激活了管理员。这似乎工作正常。然后我想使用管理员向数据库添加一些新记录。在前三个表中这很好,但在第四个表(称为“位置”)中,我收到此错误消息:'tuple' object has no attribute '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
4

3 回答 3

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)
于 2013-05-14T14:21:31.940 回答
1

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

所以更好用

return self.organisation + '-'+ self.countryofLocation + '-'+self.telNr+'-'+self.address
于 2013-05-14T14:25:46.117 回答
1

问题很可能出在这条线...

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

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

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

...?

于 2013-05-14T14:22:19.893 回答