4

値がないときに管理者のフィールドのデフォルト値を表示するDjangotasticの方法はありますか? 「n/a」と同様ですが、データベースに保存しませんか?

以下のモデルのすべてのフィールドを admin で readonly に設定すると、フロントエンドの表示は下の画像のようになります。値またはボックスまたは何かが必要なように、視覚的に折りたたまれているように感じます。私が探していることを行う簡単な方法がない場合、フロントエンド管理者をユーザーにとってより明確にする別の解決策はありますか?

class Package(models.Model):
    packaging_format = models.CharField(max_length=40)
    package_delivery_pattern = models.CharField(max_length=30, blank=True)
    package_delivery_comments = models.CharField(max_length=250, blank=True)
    package_manifest_filename = models.CharField(max_length=50)
    package_description = models.CharField(max_length=250, blank=True)
    package_naming_pattern = models.CharField(max_length=50)

管理画面に表示されるフィールドのスクリーンショット: 読み取り専用のパッケージ フィールドを含む管理者のスクリーンショット

4

2 に答える 2

5

何が起こっているかというと、値''の代わりに CharFields に実際に空の文字列を保存しているということです ( . したがって、Django-admin は、データベースに保存した文字列を表示しています (この場合は何もありません)。Noneblank=True

CharFields をnull=Trueではなく に変更すると、空の文字列ではなくデータベースにblank=True保存されます。NULLそうすれば、必要な動作が得られます。

編集:この解決策が推奨されていないことは知っていますが(Django Docsに従って)、それがあなたが望んでいた動作です。Django-admin は、データベースにある文字列を表示しているだけです''

私の頭に浮かぶ別の解決策は、Packageモデルの ModelAdmin を次のように変更することです。

class PackageAdmin(admin.ModelAdmin):
    readonly_fields = ['show_package_delivery_pattern', ...]

    def show_package_delivery_pattern(self, obj):
        if obj.package_delivery_pattern:
            return obj.package_delivery_pattern
        else:
            return 'N/A'
    # same with all your CharFields..
于 2011-11-21T17:34:29.797 に答える