Che*_*tan 5 python django django-admin
我的用例要求我在django项目的管理站点中公开多个数据库。是否通过以下链接进行了此操作:https : //docs.djangoproject.com/en/dev/topics/db/multi-db/#exposed-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)
Run Code Online (Sandbox Code Playgroud)
然后:
admin.site.register(Author, MultiDBModelAdmin)
admin.site.register(Publisher, PublisherAdmin)
othersite = admin.AdminSite('othersite')
othersite.register(Publisher, MultiDBModelAdmin)
Run Code Online (Sandbox Code Playgroud)
该示例的文档说明:该示例设置了两个管理站点。在第一个站点上,暴露了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),
]
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过您使用的任何网址访问其他管理员。在这种情况下,/otheradmin/。
此语法适用于 Django 1.10+。在 Django 的早期版本中,您include(othersite.urls)使用othersite.urls.
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |