2016-08-30 3 views
1

Also zur Zeit ich so etwas wie dieses:Allow Bearbeitung nur die aktuell ausgewählte Fremdschlüssel in Django Admin

Modell:

class ConfirmEmail(models.Model): 
    report = models.ForeignKey(Report) 
    owner = models.CharField(max_length = 100) 
    emails = models.ManyToManyField(Sdm) 

Admin:

@admin.register(ConfirmEmail) 
class ConfirmEmailAdmin(admin.ModelAdmin): 
    change_form_template = 'admin/phone/index.html' 
    readonly_fields = ('owner',) 
    filter_horizontal = ('emails',) 
    list_display = ('owner','report') 

ich diese Objekte in Code erstellen - Ich habe das Berichtsobjekt festgelegt. Aber was ich in der Django admin möchte, ist, wenn ich einem Benutzer erlauben könnte, dieses Berichtsobjekt aber nur das eine zu bearbeiten. Sie würden es ändern können (also hoffentlich wäre das Dropdown-Menü nicht mehr da), also wäre das nette Bleistiftsymbol immer noch da, aber Dinge wie das "+" - Symbol wären weg.

Und das soll nicht heißen, dass der Benutzer nicht alle Berichte bearbeiten kann, es ist nur, dass in der ConfirmEmail Admin sie nur diesen bestimmten Bericht anzeigen können, der daran angehängt ist.

Ich habe schmatzen weg und es scheint nicht zu funktionieren.

Ich würde auch geneigt sein, einfach das aktuelle Berichtsformular in das Formular ConfirmEmail eingebettet zu haben - aber ich weiß nicht, wie ich das machen würde.

Antwort

0

Sie sollten zuerst einen Modelladministrator für Ihr Berichtsmodell einführen und dann die Funktion has_add_permission Ihres ReportAdmin überschreiben.

@admin.register(Report) 
class ReportAdmin(admin.ModelAdmin): 

    # whatever you want here 

    def has_add_permission(self, request): 
     return False 

Sie können auch entfernen/deaktivieren Sie die Taste + mit Hilfe von Javascript in der Seite, aber darüber im Klaren sein, dass der Benutzer Schaden verursachen kann, wenn er die Add-URL kennt, oder deaktiviert Javascript.

+0

Ich muss JavaScript verwenden, um das + zu entfernen. Es ist nicht so, dass ich nie möchte, dass sie einen Bericht hinzufügen - diese Funktionalität ist immer noch da. Meine Hauptsache ist, dass ich dem Benutzer hoffentlich den gesamten Bericht in der Bestätigungs-E-Mail-Admin-Seite zeigen möchte, damit er ihn dort überprüfen kann. – khancock

Verwandte Themen