it-swarm.com.de

Wie man Readonly inline auf Django Admin hinzufügt

Ich verwende Django 1.4 und habe ein Many2many-Feld. Beim Erstellen der Admin-Site wollte ich dieses Feld als Inline hinzufügen.

class SummaryInline(admin.TabularInline):
    model = ParserError.summaries.through


class MyClassAdmin(admin.ModelAdmin):
    list_display = ('classifier', 'name', 'err_count', 'supported')
    fields = ('classifier', 'name', 'err_count', 'err_classifier', 'supported')
    inlines = (SummaryInline,)
    readonly_fields = ('classifier', 'err_count')

Meine Frage ist also, wie kann ich das Inline-Feld schreibgeschützt machen?

33
Hassek

Nach einer Weile versuchte ich den Namen zu finden, ich fand dank diese Antwort heraus, also überprüfte ich die Namen bei self.opts.local_fields und fand den Namen der mittleren Tabelle und fügte ihn zu readonly_fields , Einstellung can_delete hinzu. zu falsch.

class SummaryInline(admin.TabularInline):
    model = ParserError.summaries.through
    readonly_fields = ('myclasssummary',)
    can_delete = False

ziemlich einfach, aber es dauerte eine Weile, also stellte ich fest, dass es eine gute Idee war, es hier hinzuzufügen.

49
Hassek

Wenn Sie nicht möchten, dass Zeilen hinzugefügt oder gelöscht werden können, können Sie diese Definitionen hinzufügen.

def has_add_permission(self, request, obj=None):
    return False

def has_delete_permission(self, request, obj=None):
    return False
25
Keval Prabhu

Danke, Keval Prabhu

class UnitsInline(admin.TabularInline):
    model = Units
    extra = 0
    verbose_name = 'Units'
    verbose_name_plural = 'Units of company'

    **def has_add_permission(self, request, obj=None):
        return False
    def has_delete_permission(self, request, obj=None):
        return False**
2
Muhammad Hafid

Sie können die gesamte Zeile schreibgeschützt machen, indem Sie Folgendes hinzufügen:

class UnitsInline(admin.TabularInline):

    def has_change_permission(self, request, obj=None):
        return False

Dadurch wird verhindert, dass jemand den Eintrag vom Administrator bearbeitet

0
tamarabyte