Das Gute an Django ist, dass die Administrationsseite leistungsstark ist. Wenn Sie sie jedoch ordnungsgemäß verwenden, gibt ORM verschiedene SQL-Anweisungen aus. Seien Sie also vorsichtig. Ich fange gerade an, es zu verwenden, also werde ich es nach Bedarf hinzufügen.
Select_related ist aktiviert, wenn list_display ein ForeignKey-Feld enthält. Select_related folgt jedoch nicht der Beziehung des FK-Felds zu null = True, sodass das Ziel von einzelnem SQL für die Anzahl der Datensätze abgerufen wird. Daher wird beim Öffnen der Listenseite die SELECT-Anweisung ungefähr 400 Mal ausgegeben. Außerdem verfolgt select_related das FK-Feld mit null = False auf unbestimmte Zeit, sodass möglicherweise SQL mit 10 oder 20 Tabellen verknüpft wird.
Um es gut zu machen, definieren Sie queryset selbst. Mit diesem können Sie so viel wie nötig beitreten.
admin.py
class UserRelationshipAdmin(admin.ModelAdmin):
list_display = ('id', 'from_user', 'to_user', 'is_block', 'is_friend', 'created_at')
def queryset(self, request):
return super(UserRelationshipAdmin,
self).queryset(request).select_related('from_user', 'to_user')
ForeignKey- und Auswahlfelder werden standardmäßig per Pulldown (Element auswählen) auf der Detailseite angezeigt. Es ist großartig, wenn auf Zehntausende von Tabellen verwiesen wird. Wenn Sie also raw_id_fields angeben, wird ein Textfeld + eine Beschriftung angezeigt.
admin.py
class UserProfileAdmin(admin.ModelAdmin):
raw_id_fields = ('user',)
Eine Beschreibung finden Sie hier im offiziellen Dokument https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields
Recommended Posts