0

モデルの継承を使用したい django アプリケーションがあります。アプリケーションには 1 つのスーパー モデル クラスが含まれArticleており、そのコードは次のとおりです。

class Article(models.Model):
    english_title = CharField(max_length=200)
    arabic_title = CharField(max_length=200)
    english_body = HTMLField()
    arabic_body = HTMLField()
    enabled = BooleanField()

    def __unicode__(self):
        return self.english_title

    def get_body(self, locale):
        if locale == "ar" :
            return self.arabic_body
        else:
            return self.english_body

    def get_title(self, locale):
        if locale == "ar" :
            return self.arabic_title
        else:
            return self.english_title

Historyこのクラスを拡張するという子クラスがあり、ここにそのコードがあります

class History(Article, IHasAttachments):
     date = DateField(auto_now_add=True)

私の問題は、新しいエントリを挿入するときに履歴モデルの dateField (日付) が管理フォームに表示されない管理アプリケーションに表示されます。

注: django-tinymce、djnago-filebrowser、および django-grappelli を使用しています

問題は何でしょうか?

4

3 に答える 3

2

問題は、auto_now_add=True を設定した履歴モデルにあると思います。これにより、管理者に日付フィールドが表示されなくなります。モデル フィールド参照に関する django ドキュメントを確認してください。

現在実装されているように、auto_now または auto_now_add を True に設定すると、フィールドに editable=False および blank=True が設定されます。

そしてField.editableについて:

False の場合、フィールドは admin またはその他の ModelForm に表示されません。

編集可能にしたいがデフォルト値もある場合は、これを試してください:

class History(Article, IHasAttachments):
    date = DateField(default=datetime.date.today)
于 2013-02-27T12:44:11.860 に答える
0

auto_now=Trueこのフィールドを追加すると、変更のたびに更新されます。したがって、編集できなかったのは論理的には正常です。

インスタンスの作成時に自動日付を追加する場合は、次のことをお勧めします。

from django.utils.timezone import now

class History(Article, IHasAttachments):
     date = DateField(default=now())
于 2013-02-27T12:57:18.900 に答える
0

おそらくその継承の問題です。混合してみてください:

http://www.linuxjournal.com/node/4540/print

于 2013-02-27T12:19:34.657 に答える