非默认数据库的Django Admin“添加”失败

时间:2018-08-01 14:22:11

标签: django django-admin multiple-databases

我搜寻了Internet,但我的问题似乎是django管理工具中的错误,但事实并非如此。

我正在尝试使用django管理工具将记录添加到非默认数据库。我已经将admin.py设置为使用文档中所述的MultiDBModel管理员。

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

    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().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().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().formfield_for_manytomany(db_field, request, using=self.using, **kwargs)

admin.site.register(ObsField, MultiDBModelAdmin)

数据库正常工作。它已连接,我可以查看记录,也可以更改记录,但是当我尝试添加记录时。我收到以下错误。

异常类型:ProgrammingError

异常值:(1146,“表'django_site.obs_field'不存在”)

django_site是默认数据库,因为我要连接的数据库是brite_obs。我必须正确连接了某些东西,但是事实证明它可以用于查看或更改记录,但不能用于添加记录。

1 个答案:

答案 0 :(得分:0)

该异常表明表django_“ site.obs_field”不存在。

检查您传递的所有字段(使用调试器pdb / IPDB)

通过Shell控制台从数据库读取对象,查看属性并检查。

尝试在shell中创建一个新对象并查看您获得的属性。看看有什么区别。

完成所有这些操作后,您将在管理页面中知道您的错误。

享受