1

複数のデータベースでの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

4

1 に答える 1

0

どうやらバグです。

https://code.djangoproject.com/ticket/19747

バグは受け入れられたので、それは彼らがそれを確認したことを意味すると思います。

于 2013-03-01T21:13:53.867 に答える