-1

I want to run jobs by connecting to 2 different databases and run them in django admin.

First database is default sqlite and the other is postgresql. I want to print jobs to a table in pg, when I go to admin page the table name also looks different, when I click inside, see

ProgrammingError at /admin/stock_crawling/userproperties/<br>relation "stock_crawling_userproperties" does not exist
LINE 1: SELECT I get COUNT(*) AS "__count" FROM "stock_crawling_userproper... 

Also when I do py manage.py migrate, get

django.db.utils.ProgrammingError: relation "django_content_type" does not exist

#router.py

class ExampleDatabaseRouter(object):

def db_for_read(self, model, **hints):
    if model._meta.app_label == 'stock_crawling':
        return 'monodb'
    return 'default'

def db_for_write(self, model, **hints):
    if model._meta.app_label == 'stock_crawling':
        return 'monodb'
    return None

def allow_relation(self, obj1, obj2, **hints):
    if obj1._meta.app_label == 'stock_crawling' or obj2._meta.app_label == 'stock_crawling':
        return True
    elif 'stock_crawling' not in [obj1._meta.app_label, obj2._meta.app_label]: 
        return True
    return False

def allow_migrate(self, db, app_label, model_name=None, **hints):
    if app_label == 'stock_crawling':
        return db == 'default'
    return None

#models.py

from django.db import models
class UserProperties(models.Model):

UserId = models.IntegerField(),
Key = models.TextField(),
Value = models.TextField(),
CreatedDate = models.DateTimeField(),
ModifiedDate = models.DateTimeField()

#admin.py

from django.contrib import admin
from stock_crawling import models as job_models
from django.db.models.base import ModelBase
for name, var in job_models.__dict__.items():

    if type(var) is ModelBase:
        admin.site.register(var)

#settings.py

DATABASE_ROUTERS = ["crawling_server.router.ExampleDatabaseRouter"]

I also set 2 databases in settings.py

buse
  • 1
  • 1

0 Answers0