1

最近まで完璧に機能していたものが機能しなくなりました。別のオブジェクトへの外部キーを持つモデルは、標準のdjangoadminで期待どおりに編集できません。問題は次のとおりです。一部のモデルへのForeignKeysは、管理者ページにラベルが表示されていても、管理者インターフェイスで編集できません。次のようになります。質問モデルのDjangoインターフェース編集ページ

Storyモデルへの外部キーを編集する必要があるビットのHTMLコード:

<div class="form-row field-story">
        <div>
            <label for="id_story" class="required">Story:</label>           
        </div>
</div>

それぞれのUnicode定義を持つ2つの関連モデル:

class Question(models.Model):
    question = models.CharField(max_length = 200)#the Actual question
    correct_answer = models.ForeignKey(Answer, verbose_name = 'Correct Answer', related_name = 'Correct answer')
    incorrect_answers = models.ManyToManyField(Answer, verbose_name = 'Distractor options', related_name = 'Incorrect answers')
    story = models.ForeignKey(Story)

    def __unicode__(self):
        try:
             return self.question.decode('latin-1') + '(%i)'%(self.id)
        except:
            return str(self.id)


class Story(models.Model):
    class Meta:
        verbose_name_plural = 'Stories'

    author = models.ForeignKey(User, blank = True, null = True, on_delete = models.SET_NULL, editable = False)
    name = models.CharField(max_length = 150, verbose_name = 'Name/Summary')
    story = models.TextField(verbose_name = 'Story', max_length = 13 * 54)#the actual story
    publish = models.BooleanField(default = False, help_text = 'If this is published, it will be uneditable.')
    date_added = models.DateTimeField (auto_now_add = True, editable = False)#date of reply
    ready = models.BooleanField(default = False, help_text = 'Whether the author thinks this is ready')
    erf = models.CharField(max_length = 20, verbose_name = 'ERF label', editable = False, blank  = True, null = True)

    def __unicode__(self):
        try:
            return "'"+self.name.encode( 'latin-1') + "'"
        except:
            return "Story with unicode name or something: %i" %(self.id)

admin.pyの場合:

admin.site.register(Question, )

何が機能し、何が機能しないかを見ると、ストーリーモデルと関係があると感じ始めています。他の外部キー関係は正常に機能しています。もちろん、外部キーが編集できないという事実は、MySQLが質問テーブルに有効なstory_idがあることを示していても、オブジェクトを管理者から保存できないことを意味します。

私はこれを使用したこと、そしてこれがうまく機能したことを覚えています。私はどこかでユニコードの問題を疑っていますが、それらを修正する方法は言うまでもなく、正確に何を想像することはできません。誰か助けてもらえますか?

PS。ForeignKeyフィールドで何が起こってもDjango管理サイトには表示されないので、ここではそうではないと思います。

4

1 に答える 1

1

うーん..他のforeignfieldの問題を探していると、DjangoでForeignKeyフィールドの問題が発生しました。質問へのコメントで、Daniel Roseman、モデルの unicode defs は unicode を返す必要があると述べています。それを試してみると、私の問題は解決しました。

うーん.. ユニコード... 今回はあなたの勝ちです!

于 2012-11-19T10:18:57.143 に答える