複数のデータベースでのAdminの使用に関する1.4のドキュメントによると、ModelAdmin
サブクラスに実装する必要があるのは5つのメソッドだけです。推奨される方法で5つすべてをオーバーライドしました。データベースの閲覧は問題なく機能します。
ただし、既存のレコードを保存しようとすると、テーブルがデータベースに存在しないというエラーが表示されます。これは、メソッドの実装で指定したデータベースではなく、プロジェクトのデフォルトのデータベースです。実際、save_model()
エラーがスローされる前に呼び出されることはありません。そのため、エラーが発生する前のどこかに、適切なデータベースの「使用」を正常に取得していない参照があります。
何が欠けているのか誰か知っていますか?これが私のModelAdmin
クラスです:
class TransactionAdmin(admin.ModelAdmin):
using = "salesdb"
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(TransactionAdmin, 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(TransactionAdmin, 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(TransactionAdmin, self).formfield_for_manytomany(db_field, request=request, using=self.using, **kwargs)
そして、私が得ているエラーは次のとおりです。
(1146, "Table 'django_dev._Transactions' doesn't exist")
django_dev
はデフォルトのデータベースであり、データベースではありませんsales
。