簡體   English   中英

在django admin中公開多個數據庫

[英]exposing multiple databases in django admin

我的用例要求我在我的django項目的管理站點中公開多個數據庫。 這是在這個鏈接之后: https//docs.djangoproject.com/en/dev/topics/db/multi-db/#exposing-multiple-databases-in-django-s-admin-interface

這是使用的代碼:

class MultiDBModelAdmin(admin.ModelAdmin):
# A handy constant for the name of the alternate database.
using = 'other'

def save_model(self, request, obj, form, change):
    # Tell Django to save objects to the 'other' database.
    obj.save(using=self.using)

def delete_model(self, request, obj):
    # Tell Django to delete objects from the 'other' database
    obj.delete(using=self.using)

def get_queryset(self, request):
    # Tell Django to look for objects on the 'other' database.
    return super(MultiDBModelAdmin, self).get_queryset(request).using(self.using)

def formfield_for_foreignkey(self, db_field, request, **kwargs):
    # Tell Django to populate ForeignKey widgets using a query
    # on the 'other' database.
    return super(MultiDBModelAdmin, self).formfield_for_foreignkey(db_field, request, using=self.using, **kwargs)

def formfield_for_manytomany(self, db_field, request, **kwargs):
    # Tell Django to populate ManyToMany widgets using a query
    # on the 'other' database.
    return super(MultiDBModelAdmin, self).formfield_for_manytomany(db_field, request, using=self.using, **kwargs)

接着:

admin.site.register(Author, MultiDBModelAdmin)
admin.site.register(Publisher, PublisherAdmin)

othersite = admin.AdminSite('othersite')
othersite.register(Publisher, MultiDBModelAdmin)

該示例的文檔說明:此示例設置了兩個管理站點。 在第一個站點上,公開了Author和Publisher對象; 發布者對象具有表格內聯,顯示該發布者發布的書籍。 第二個站點只公開發布者,沒有內聯。

我似乎沒有在任何地方找到的是:我如何訪問其他“網站”? 必須使用哪個URL來查看在另一個“網站”中公開的表格? 應該是直截了當的,但我似乎無法在任何地方找到它。

您需要為管理站點添加URL模式,類似於啟用常規站點的方式:

# urls.py
from django.conf.urls import url
from django.contrib import admin
from myapp.admin import othersite

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^otheradmin/', othersite.urls),
]

然后,您可以使用您使用的任何URL訪問其他管理員。 在這種情況下, /otheradmin/

此語法適用於Django 1.10+。 在早期版本的Django中,您使用include(othersite.urls)而不是othersite.urls

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM