LINUX.ORG.RU

python, Django и queryset

 , ,


0

1

Что-то туплю.

есть модель:

class Currency(models.Model):
    id = models.CharField(unique=True, primary_key=True, max_length=15)
    name = models.CharField(null=False, max_length=15)
    monitoring = models.BooleanField(default=False)

class Rate(models.Model):
    currency = models.ForeignKey(Currency, on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now_add=True)
    price_usd = models.FloatField()

Я делаю код в manage.py shell:

data = Currency.objects.filter(monitoring=True)
ololo = data[0].rate_set.all()# чисто на "посмотреть"
Работает. Если вставляю в Django, при запуске он мне выдаёт ругань:
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

Направь, о Гуру, на правильный путь!

Deleted

Ответ на: комментарий от Dmit3Y

в models.py. А как принято? А куда надо? А то я не писал на Django.

Deleted ()
Ответ на: комментарий от Deleted

Ну если ты просто в models.py вставляешь эти строки, то работать не будет. Можно создать метод какой-то в нужной тебе модели и в нем выполнять код. Опять же, метод откуда-то придется вызывать.

Вообще, тебе бы в сторону представлений сейчас идти. Т.е. при получении http-запроса выполнять то, что тебе нужно.

Пройди туториал: https://docs.djangoproject.com/en/2.0/intro/

Dmit3Y ()

Так-то тебе нужно смотреть сторону View как праильно сказали выше и, если у тебя они class-based view(CBV),то смотреть надо метод get_queryset()

pylin ★★★★★ ()
Ответ на: комментарий от Dmit3Y

нене. Представления не нужны. ИМХО, джанго тоже. Просто людям нравится админка. Спасибо, что сказал (мол, работать не будет). Тогда какой путь? создаю файл, в него импортрую модели и там верчу логику? Почему в ./manage shell всё работает? Задача без View. Cron там...

Deleted ()
Ответ на: комментарий от pylin

А если я хочу решить без представлений?

Deleted ()
Ответ на: комментарий от Deleted

Если хочешь без представлений, то можешь писать свои запросы в отдельный скрипт и перед нмими вызвать django.setup(),но,по-моему, ты творишь что-то не то,зачем прикручивать к проекту веб-фреймворк, если им не пользоваться.

pylin ★★★★★ ()
Ответ на: комментарий от Deleted

Делай запрос в базу данных без джанги.

anonymous ()
Ответ на: комментарий от pylin

В том то и оно. Ребят привлекла Django-админка, наверное. А так задача по крону вызывать django-command и что-то делать (как я вижу). А что даёт django.setup() в двух словах? Я то почитаю. Это решение для велосипедостроения? А как принято реализовывать? В проекте создавать подпапки и прямо в корень сыпать?

В любом случае, СПАСИБО.

Deleted ()
Ответ на: комментарий от pawnhearts

Это я читал (возможно невнимательно).

Deleted ()
Ответ на: комментарий от Deleted

Делаешь custom command как там описано и дергаешь её через python manage.py mycommand

pawnhearts ★★★★★ ()
Ответ на: комментарий от pawnhearts

Это то понятно. Для manage.py не надо указывать python он прописан внутрях. Меня интересовало, если в двух словах - django.setup() Я просто на stackower встречал.

Deleted ()
Ответ на: комментарий от Deleted

Management command всё это сделает за тебя. Оно для этого и есть, чтобы всякие задачки по крону дергать, которые должны с твоими моделями взаимодействовать и т.п.

pawnhearts ★★★★★ ()
Ответ на: комментарий от pawnhearts

Спасибо. Тогда копну глубже доки.

Deleted ()
Ответ на: комментарий от pawnhearts

Копнул. Ваще пиу пиу и в «дамки».

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.