2016-05-22 5 views
1

Meine tabellarische inline im Admin sieht wie folgt aus:Entfernen oder Objekt bearbeiten Name in admin.TabularInline

tabularinline

Wie kann ich von der DateDeCotisation_adherents object Satz loswerden?

Für Bonuspunkte, warum gibt es drei leere Zeilen am unteren Rand?

admin.py

class DatesDeCotisationInline(admin.TabularInline): 
    model = DateDeCotisation.adherents.through 
    readonly_fields = ['datedecotisation'] 
    can_delete = False 

models.py

class DateDeCotisation(models.Model): 

    date = models.DateTimeField() 
    adherents = models.ManyToManyField(Adherent, related_name='adherents_du_jour') 

    def __str__(self): return self.date.strftime('%Y-%m-%d') 

    class Meta: 
     verbose_name = "date de cotisation".encode('utf-8') 
     verbose_name_plural = "dates de cotisation".encode('utf-8') 
     ordering = ['-date'] 
+0

In Bezug auf die zusätzlichen drei Felder am unteren Ende, nur um sie "extra = 0" in meiner TabularInline Klasse gelöscht setzen. – Brachamul

Antwort

2

Die Inline-according to the documentation die verbose_name und verbose_name_plural von der inneren Meta Klasse des Modells nehmen. Aber ich habe deinen Code einfach in den neuesten Django geworfen und er tut es auch nicht (oder vielleicht auch nur, wenn du trotzdem .through verwendest).

Glücklicherweise können Sie immer, dass außer Kraft setzen, indem verbose_name und verbose_name_plural direkt in der InlineModelAdmin Einstellung, dh

class DatesDeCotisationInline(admin.TabularInline): 
    model = DateDeCotisation.adherents.through 
    readonly_fields = ['datedecotisation'] 
    can_delete = False 
    verbose_name = 'date de cotisation for adherent' 
    verbose_name_plural = 'date de cotisation for adherent' 

class AdherentAdmin(admin.ModelAdmin): 
    inlines = [DatesDeCotisationInline] 

admin.site.register(models.Adherent, AdherentAdmin) 

(Sorry für die „für“ gibt, aber ich kein Französisch sprechen)

Der Admin erscheint als in Django 1.10 folgt:

django tabular inline


Auf eine kleine Notiz sollten Sie nie .encode('utf-8') in Python 3 tun. Seine Stiche sind UTF-8 standardmäßig.

class Meta: 
    verbose_name = "date de cotisation".encode('utf-8') 
    verbose_name_plural = "dates de cotisation".encode('utf-8') 

(ich nehme an, Sie auf Python 3 sind, da Sie __str__ verwenden)

+0

Danke für Ihre Antwort! Ich werde es ausprobieren. Und gibt es eine Möglichkeit, die Phrase ganz los zu werden? "Für" wäre "pour" auf Französisch! – Brachamul

+0

scheint, als ob es nicht funktioniert, immer noch das gleiche Ergebnis, auch nachdem ich verbose_name und seine Plural in meinem Admin gesetzt habe: s – Brachamul

+0

Ich habe die neueste Version von Django (1.10 zum Schreiben) verwendet, um meine Tests durchzuführen. Laut der Dokumentation ist das Feld in 'InlineModelAdmin' ziemlich alt, also vermute ich stattdessen die Art, wie Sie Ihre tabellarische Inline-Datei registrieren. Ich habe meine Antwort mit der Art aktualisiert, wie ich das 'admin.site.register 'ausgeführt habe. – grochmal

Verwandte Themen