2016-04-01 2 views
0

jeder, ich lese ein Django-Übungsbuch ,, Ich sah einen Code "model = Thing" in admin.py ,,, aber wenn ich "model = Thing" ,,, das Web-Programm kann noch ausgeführt werden , die Admin-Site sieht keinen Unterschied aus ??, was bedeutet dieser Code ?, wenn ohne es was passieren wird? meine models.py Klasse ist Sacheadmin.py: "model = Thing", was bedeutet dieser Code, wenn ohne was passiert?

admin.py

from django.contrib import admin 
from collection.models import Thing 



class ThingAdmin(admin.ModelAdmin): 
    model = Thing #if I remove this code, the program still can run,,why need this code 
    list_display = ('name', 'description',) 
    prepopulated_fields = {'slug': ('name',)} 

admin.site.register (Ding, ThingAdmin)

modles.py

from django.db import models 

class Thing(models.Model): 
    name = models.CharField(max_length=255) 
    description = models.TextField() 
    slug = models.SlugField(unique=True) 
+2

Es ist nur für 'InlineModelAdmin' erforderlich - https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin.model – jonrsharpe

+0

Dank für Ihre Antwort –

Antwort

1

Einstellung eines model Attribut in der ModelAdmin Klasse wird keine Auswirkungen haben. Sie können diese Zeile sicher aus Ihrem Code entfernen.

Im Django-Admin geben Sie das Modell an, wenn Sie admin.site.register() aufrufen, oder indem Sie den register Decorator verwenden. Auf diese Weise können Sie dieselbe Modelladministratorklasse für mehr als ein Modell verwenden.

admin.site.register(Thing, ThingAdmin) 
admin.site.register(OtherThing, ThingAdmin) 

Wie Jon in den Kommentaren darauf hingewiesen, brauchen Sie die model für InlineModelAdmin Objekte angeben.

+0

Dank für Ihre Antworten –