2

django での ForeignKey 参照の問題について質問があります。

これは私のコードの一部です:

アプリチケットトレーダー

class TicketsTrader(models.Model):
    seller = models.ForeignKey(User, related_name='ticketsTrader_seller')
    buyer = models.ForeignKey(User, related_name='ticketsTrader_buyer')
    inscription = models.ForeignKey(Inscription)
    transactionCode = models.CharField(max_length=30,blank=False,null=False)
    ...

アプリの碑文

class Event(models.Model):
    title = models.CharField(max_length=75)
    description = models.TextField()
    ...

class Inscription(models.Model):
    event = models.ForeignKey(Event)
    packs = models.ManyToManyField(PackChoise)
    user = models.ForeignKey(User)
    ...

    def __unicode__(self):
        return self.event.__unicode__() + u': ' + self.user.__unicode__()

    def inscriptionKey(self):
        return str(self.pk) + '_' + str(self.valkey)

しかし、Grapelli 管理画面で「Add Ticket Trader」インターフェイスにアクセスしようとすると、エラー メッセージが表示されます。

ユーザー マッチング クエリが存在しません。

get の Python27\lib\site-packages\django\db\models\query.py、366 行目

テンプレート \grappelli\templates\admin\includes\fieldset.html の 19 行目のエラー

取得したいのは: ticketTrader テーブルの「碑文」列で、「碑文」テーブルの一意の ID (pk) の値を取得します。

または「inscriptionKey」の値ですが、それは不可能だと思います。

Django バージョン:1.4 / Python バージョン: 2.7.3 / South 最終バージョン

ご協力いただきありがとうございます :)

4

2 に答える 2

0

私は推測することしかできません:

TicketsTrader には Inscription への外部キーがあり、これは User への外部キーを持ち、そのキーを__unicode__()メソッドで使用します。

現在、Grapelli についてはわかりませんが、デフォルトの管理アプリは、Add TicketsTrader ページで Inscription-s のドロップダウンをレンダリングします。一部のInscription-s が存在しない -s を指している場合User、それらの__unicode__()メソッドは指定したエラー メッセージで失敗します。

問題は、一部のUser-s が欠落していて、 Inscription-s がそれらを指していない可能性があることです。たとえば、MySQL+MyISAM を使用する場合、そこでは外部キーが強制されないため、あらゆる種類の奇妙なことが発生する可能性があります。

于 2012-06-24T23:51:45.797 に答える
0

ユーザーがいないためだと思います...チケットトレーダーを作成する前にユーザーを作成してみてください

于 2012-06-25T01:54:07.877 に答える