【发布时间】:2017-10-29 10:15:08
【问题描述】:
我创建了一个类,用于将 Django-Admin 暴露给多个数据库,如 Django 文档中所述。
我的 admin.py 看起来像这样
from django.contrib import admin
# Register your models here.
from .models import DestinationMap
class MultiDBModelAdmin(admin.ModelAdmin):
# A handy constant for the name of the alternate database.
using = 'supplierui'
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 queryset(self, request):
# Tell Django to look for objects on the 'other' database.
return super(MultiDBModelAdmin, self).queryset(request).using(self.using)
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
# Tell Django to populate ForeignKey widgets using a query
# on the 'other' database.
return super(MultiDBModelAdmin, self).formfield_for_foreignkey(db_field, request=request, using=self.using, **kwargs)
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
# Tell Django to populate ManyToMany widgets using a query
# on the 'other' database.
return super(MultiDBModelAdmin, self).formfield_for_manytomany(db_field, request=request, using=self.using, **kwargs)
admin.site.register(DestinationMap, MultiDBModelAdmin)
#admin.site.register(DestinationMap)
管理界面显示模型名称,但有 0 个对象。
该表包含275个对象,我已经确认使用sql。
到目前为止,我找不到任何解决方案。 帮助将不胜感激。
【问题讨论】:
-
The table contains 275 objects那么你到底为什么要创建一个类来将 Django-Admin 暴露给多个数据库,如 Django 文档中所述,此功能适用于您拥有数千万条记录并且可以不再垂直缩放 -
@e4c5 因为我正在使用多个数据库,我需要定期(手动)将对象添加到该表中。如果我的方法是错误的,请您解释一下我该如何完成这项任务?我正在使用 Postgres 数据库来保存 2 张表,一张有大约 10M 条记录,一张有 275 条记录。我需要使用 django-admin 将记录添加到后者。
-
我真的不明白为什么不能将此表添加到现有数据库中。但是如果没有更多详细信息,例如您的设置、路由器等,就无法回答这个问题
-
@e4c5 我没有使用默认数据库,目前正在通过
.using('dbname')进行手动路由。告诉我您需要哪些详细信息,我会为您提供相同的信息。另外,你还能告诉我,为什么表格对象不可见吗?谢谢! -
应该是
get_queryset(self, request)能不能换个试试
标签: python django python-2.7 django-admin