Size: a a a

Django [ru] #STAY HOME

2019 September 14

T

Tim in Django [ru] #STAY HOME
Привет. Такой вопрос. Есть две бд. БД1 - все модели моего проекта. БД2 - города и страны.

Задача из БД2 в БД1 перенести данные.

В databases добавил БД2, добавил две модели в проект (CityOther, CountryOther), которым указал db_table="имя таблицы из БД2". написал роутер для дб.

в shell пытаюсь обратиться к CountryOther - CountryOther.objects.all(). Получаю такую ошибку:

django.db.utils.ProgrammingError: column _countries.id does not exist
LINE 1: SELECT "_countries"."id", "_countries"."country_id", "_count...

class CountryOther(models.Model):
   country_id = models.IntegerField(primary_key=True)
   title_ru = models.CharField(max_length=300)

   class Meta:
       managed = True
       db_table = '_countries'


роутер(принты отрабатывают)

class DbRoute:
   def db_for_read(self, model, **hints):
       print('start db_for_read')
       if model == CityOther or model == CountryOther:
           print('db_for_read')
           return 'cities'
       return None
источник

T

Tim in Django [ru] #STAY HOME
Возможно ли это вообще?) что делаю не так?

Вообще есть вариант залить дамп из БД2 в БД1 и уже дата-миграциями перенести данные
источник

T

Tim in Django [ru] #STAY HOME
Как я понимаю, джанга пытается дернуть
country.id
, которого в бд нет
источник

T

Tim in Django [ru] #STAY HOME
Вопрос снят
Не было primary key
источник

M

Mihail in Django [ru] #STAY HOME
Ребят, подскажите, нормальна ли архетектурно ситуация, когда в одной модели присутствуют несколько полей ForeignKey с blank=True? Но на самом деле модель может быть связана только лишь с одной из указанных в ForeignKey моделях. Т.е. остальные поля просто будут убираться на уровне админки, когда модель будет указываться через InlineModelAdmin
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
checks добавь и нормально
источник

T

Tim in Django [ru] #STAY HOME
Mihail
Ребят, подскажите, нормальна ли архетектурно ситуация, когда в одной модели присутствуют несколько полей ForeignKey с blank=True? Но на самом деле модель может быть связана только лишь с одной из указанных в ForeignKey моделях. Т.е. остальные поля просто будут убираться на уровне админки, когда модель будет указываться через InlineModelAdmin
мне кажется нет. Мне кажется лучше отдельно таблицы создавать
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
нормально/ненормально - это зависит от проекта во многом и от того, как работать с данными
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
сейчас многие вообще засовывают всё в NoSQL и как бы это норм, если там на входе жёстко проверять, в каком формате туда записывать данные
источник

M

Mihail in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
checks добавь и нормально
что за checks?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
ну, то есть база данных разрешает "пиши что хочешь", программист на входе перед записью проверяет по валидатору модели, подходит по структуре или нет, если подходит - данные пишутся
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
Mihail
что за checks?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
то есть 3 ключа, 1 и только 1 должен быть не NULL
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
(если я правильно понял твоё сообщение)
источник

M

Mihail in Django [ru] #STAY HOME
Alexander Ovchinnikov 🦁
то есть 3 ключа, 1 и только 1 должен быть не NULL
да, что-то такое я и хочу сделать. Но как в django проверку сделать? Это же статья о сыром sql
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
ну да
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
ну то есть через миграции ты можешь что угодно добавить
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
используя SQL
источник

M

Mihail in Django [ru] #STAY HOME
вообщем-то я думаю, что если на уровне админки сразу все лишние поля отсеивать в InlineModelAdmin, то не должно проблем с несколькими введёнными полями возникнуть. Но на всякий случай проверку, конечно, неплохо было бы сделать
источник

M

Mihail in Django [ru] #STAY HOME
главное, что я не один думаю, что это адекватная мысль использовать подобную архитектуру :)
источник