我刚开始搞乱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
答案 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