0

私はDjangoをいじり始めたばかりです。新しいプロジェクトと新しいアプリを作成しました。そのアプリでモデルを作成し、管理者を有効にしました。これはうまくいくように見えました。次に、管理者を使用してデータベースにいくつかの新しいレコードを追加したいと考えました。最初の 3 つのテーブルではこれで問題ありませんでしたが、4 つ目のテーブル (「location 」と呼ばれます) では、 「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
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

...__unicode__メソッドからタプルを返す場所。代わりに文字列オブジェクトを返す必要がありますが、それが何であるべきかは不明です。多分...

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

...?

于 2013-05-14T14:22:19.893 に答える