2017-12-16 1 views
0

Ich versuche, zwei Felder zu verbergen und zu löschen, die in einem Formular angezeigt werden, das ich in der Django-Verwaltungsseite mithilfe von ModelForm erstellt habe. Ich schaute auf Antworten, die besagten, dass ich das "Ausschließen" Metafeld verwenden sollte, aber ich weiß nicht, warum es in meinem Fall nicht funktioniert. Hier ist mein Code:Wie lösche ich ein Feld aus meinem Django ModelForm?

models.py:

class Activity(models.Model): 
    type = models.CharField(max_length=50, default="") 
    title = models.CharField(max_length=200, default="") 
    description = models.CharField(max_length=500) 
    owner = models.ForeignKey(User, related_name="owner") 
    college = models.CharField(max_length=200) 
    location = models.CharField(max_length=200) 
    room = models.CharField(max_length=200) 
    startDate = models.DateTimeField(null=True, blank=True) 
    endDate = models.DateTimeField(null=True, blank=True) 
    attendee = models.ManyToManyField(Attendee, related_name="attendees",null=True, blank=True) 
    volunteer = models.ManyToManyField(Volunteer, related_name="volunteers",null=True, blank=True) 

Ich versuche, die "Teilnehmer & Freiwilliger" Felder von der Anzeige in der Django Verabreichungsform auszuschließen.

In admin.py ich habe:

from django.contrib import admin 
from django import forms 
from KSUvity.models import Activity 


class ActivityForm(forms.ModelForm): 

    class Meta: 
     model = Activity 
     exclude = ['attendee', 'volunteer',] 

class ActivityAdmin(admin.ModelAdmin): 
    exclude = ['attendee', 'volunteer',] 
    form = ActivityForm 

admin.site.register(Activity, ActivityAdmin) 

Antwort

1

Sie haben eine admin.py Datei in Ihrer Anwendung erstellen und Ihre Modelle registrieren Folgen Sie der instuctions Siehe nachstehendes Beispiel

from django import forms 
from django.contrib import admin 
from myapp.models import Person 

class PersonForm(forms.ModelForm): 

    class Meta: 
     model = Person 
     exclude = ['name'] 

class PersonAdmin(admin.ModelAdmin): 
    exclude = ['age'] 
    form = PersonForm 

admin.site.register(Person, PersonAdmin) 
+0

Überprüfen Sie meinen aktualisierten Code in meiner Frage. Ich folgte genau den gleichen Schritten, aber nichts änderte sich und die Felder zeigen immer noch. –

+0

@ w.y siehe bitte bearbeiten –

+0

endlich funktioniert! Danke. –

0

Sie entweder Felder verwenden können oder in einer Klasse auszuschließen.

Fügen Sie diesen Code in Ihr App Admin-Feld ein.

app_name/admin.py

from django.contrib import admin 


class ActivityAdmin(admin.ModelAdmin): 
    exclude = ('attendee', 'volunteer',) 
0

Sie müssen die Option ModelAdmin verwenden, um Felder aus dem Formular in der Django-Verwaltung auszuschließen, entweder ModelAdmin.exclude oder ModelAdmin.fields. Unten ist ein Beispiel:

class ActivityAdmin(admin.ModelAdmin): 
    exclude = ('attendee', 'volunteer',) 

, damit es funktioniert, Sie Modell wie folgt registrieren:

admin.site.register(Activity, ActivityAdmin) 

Sie diesen Code-Datei zu admin.py hinzufügen.

+0

Ich habe diesen Code in admin.py hinzugefügt aber nichts geändert, die Felder werden immer noch in der Form angezeigt. –

+0

Damit es funktioniert, müssen Sie ein Modell wie dieses 'admin.site.register (Activity, ActivityAdmin)' registrieren. Aber ich sehe, du hast es schon funktioniert. – Borut

Verwandte Themen