Django foreignkey между двумя базами данных

Я хочу соединить две таблицы SQLite вместе (о, Боже). Я нашел это решение : How to use django models with foreign keys in different DBs? , я адаптировал его под свои модели и свой код (я думаю). У меня нет плохих ответов от django. Однако, я хочу изменить запись с помощью админского представления django, и когда я пытаюсь добавить запись с внешним ключом другой базы данных, я получаю такой ответ:

Тип исключения: OperationalError at /admin/users/character/add/ Значение исключения: нет такой таблицы: books

Как адаптироваться, чтобы исправить это?

модели базы данных по умолчанию

from django.db import models

from users.related import SpanningForeignKey

from books.models import Books

class Character(models.Model):
    
    last_name = models.fields.CharField(max_length=100)
    first_name = models.fields.CharField(max_length=100)
    book = SpanningForeignKey('books.Books', null=True, on_delete=models.SET_NULL)
    def __str__(self):
        return f'{self.first_name} {self.last_name}'

моделирует внешнюю базу данных

from django.db import models

# Create your models here.

class Books(models.Model):
    title = models.TextField()
    sort = models.TextField(blank=True, null=True)
    timestamp = models.TextField(blank=True, null=True)  # This field type is a guess.
    pubdate = models.TextField(blank=True, null=True)  # This field type is a guess.
    series_index = models.FloatField()
    author_sort = models.TextField(blank=True, null=True)
    isbn = models.TextField(blank=True, null=True)
    lccn = models.TextField(blank=True, null=True)
    path = models.TextField()
    flags = models.IntegerField()
    uuid = models.TextField(blank=True, null=True)
    has_cover = models.BooleanField(blank=True, null=True)
    last_modified = models.TextField()  # This field type is a guess.

    class Meta:
        managed = False
        db_table = 'books'
        app_label = 'books'

class Languages(models.Model):
    lang_code = models.TextField()

    class Meta:
        managed = False
        db_table = 'languages'
        app_label = 'books'

class BooksLanguagesLink(models.Model):
    book = models.ForeignKey(Books, null=True, on_delete=models.SET_NULL, db_column='book')
    lang_code = models.ForeignKey(Languages, null=True, on_delete=models.SET_NULL, db_column='lang_code')
    item_order = models.IntegerField()

    class Meta:
        managed = False
        db_table = 'books_languages_link'
        app_label = 'books'

admin books

from django.contrib import admin

from books.models import Books, Languages

class BooksModelAdmin(admin.ModelAdmin):
    using = 'calibre_db'
    
    def save_model(self, request, obj, form, change):
        obj.save(using=self.using)
    
    def delete_model(self, request, obj):
        obj.delete(using=self.using)
    
    def get_queryset(self, request):
        return super().get_queryset(request).using(self.using)
    
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        return super().formfield_for_foreignkey(db_field, request, using=self.using, **kwargs)
    
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        return super().formfield_for_manytomany(db_field, request, using=self.using, **kwargs)

# Register your models here.

admin.site.register(Books, BooksModelAdmin)
Вернуться на верх