@pydjango

Страница 477 из 1273
Spacehug
21.08.2017
09:06:06
Когда я говорю фильтрануть - мне нужно в list_filter при регистрации в админке передать, собственно, кастомный фильтр

Как фильтрануть по другим параметрам типа is_dead - я научился

Dan
21.08.2017
09:07:05
у сабоководов есть связь к собакам правильно ?

Spacehug
21.08.2017
09:07:12
да, форейн кей

Google
Dan
21.08.2017
09:07:21
ты в модели сабоководов

pet__datefield

pet - поле ForeignKey

datefield - поле по которому фильтруешь

два подчеркивания между ними

Spacehug
21.08.2017
09:09:48
%)

Окей, объясню на боевом примере

Есть модель Юзер, у Юзера есть комменты, лайки и "разговоры" (к которым есть комменты). Имеется вот такая каша:

Dan
21.08.2017
09:10:54
не скромничай скидывай сразу код

модели и админки

Spacehug
21.08.2017
09:12:39
@admin.register(UserStats) class StatisticsAdmin(UserAdmin): list_filter = (DCLFilter, ('date_joined', DateRangeFilter),) list_display_links = 'id', 'email', 'first_name', 'last_name' search_fields = 'email', 'first_name', 'last_name', 'id' ordering = 'first_name', 'last_name', 'email' empty_value_display = '------' form = UserAdminForm class Meta: model = User def get_queryset(self, request): self.request = request queryset = super(StatisticsAdmin, self).get_queryset(request) return queryset def get_discussions_amount(self, obj): try: _filter = DCLFilter(self.request, dict(self.request.GET), self.Meta.model, self.Meta.model) return _filter.queryset(self.request, Discussion.objects.filter(author=obj.id)).count() except Exception as e: logger.error("GRAND EXCEPTION", e)

Фильтр, который уже есть: class DCLFilter(SimpleListFilter): """ Discussion, Comment, Like фильтр по полю is_delete""" title = "Разговоры и комментарии по удалённости" parameter_name = 'deleted_content' def lookups(self, request, model_admin): return (("no", "Не удалённые"), ("yes", "Удалённые")) def queryset(self, request, queryset): if self.value() in ("yes", ["yes"]) and queryset.model.__name__ in ('Discussion', 'Comment'): return queryset.filter(is_delete=True) elif self.value() in ("no", ["no"]) and queryset.model.__name__ in ('Discussion', 'Comment'): return queryset.filter(is_delete=False)

Я не могу раздуплиться как прикрутить второй фильтр, он при явном указании model_admin и filter_path говорит, что их нет :)

Google
Spacehug
21.08.2017
09:15:09
Модель не покажу - там из нужного только поле is_delete и date_created

Dan
21.08.2017
09:15:45
поле по которому связь ?

Spacehug
21.08.2017
09:16:47
поле по которому связь ?
user = models.ForeignKey(User)

Dan
21.08.2017
09:17:27
тебе надо фильтровать по полю date_created в модели user?

Spacehug
21.08.2017
09:18:02
Мне надо фильтровать _зависимые модели_ по полю date_created в модели user

Как юзеров по дате фильтрануть, я знаю )

Dan
21.08.2017
09:18:40
ну так поле по которому зависимая модель связывается скажи

Spacehug
21.08.2017
09:19:23
user = models.ForeignKey(User)
Вот жеж. У всех троих (разговоры-лайки-комменты) такое

Dan
21.08.2017
09:19:35
аааа

теперь смотри допустим модель модель коментов

Dmitriy
21.08.2017
09:21:23
хм, это же простое ModelName.objects.filter(user__date_created=X), нет?

Dan
21.08.2017
09:21:36
user = models.ForeignKey(User, related_name='user_commnets')

в фильтре указываешь 'user_comments__date_created'

Spacehug
21.08.2017
09:22:21
хм, это же простое ModelName.objects.filter(user__date_created=X), нет?
Нет, я регаю в админке User и мне отображая список юзеров нужно показать отфильтрованный кверисет с данными зависимых моделей.

А так я только юзеров отфильтрую по полю модели User

Dmitriy
21.08.2017
09:24:56
А так я только юзеров отфильтрую по полю модели User
в приведенном мной коде не юзеры фильтруются, а (например) комменты

Spacehug
21.08.2017
09:24:57
в фильтре указываешь 'user_comments__date_created'
Тут нюанс есть, просто так фильтр ебануть - не проблема. Мне нужно сделать именно в list_filter - это нужно писать кастомный фильтр, и потом _filter = DCLFilter(self.request, dict(self.request.GET), self.Meta.model, self.Meta.model) return _filter.queryset(self.request, Discussion.objects.filter(author=obj.id)).count() # Например. Тут - фильтр по разговорам конкретного юзера.

в приведенном мной коде не юзеры фильтруются, а (например) комменты
Так, окей. Попробую ещё раз объяснить. Я пишу страницу статистики, где вываливается список пользователей (модель User). Её и регистрирую. У каждого пользователя есть куча комментов, лайков и разговоров - все они ссылаются на User по ForeignKey. Мне нужна панелька справа в админке, чтобы при тычке на неё происходили следующие вещи: - Фильтровались удалённые, не удалённые комменты-разговоры-лайки (это уже есть) - Из этого фильтровались комменты-разговоры-лайки по дате (вот в этом загвоздка). - В итоге в каждой строке у каждого юзера показывалось количество нафильтровавшегося

Dmitriy
21.08.2017
09:28:48
т.е. ты хочешь сделать reverse relation filter по полю

Google
Spacehug
21.08.2017
09:28:53
Исходя из "панелька справа в админке" можно сделать вывод, что это list_filters

Исходя из того, что это list_filters - мне нужен кастомный. Изначальный вопрос был именно в этом: как пишутся кастомные фильтры DateRangeFilter, если в их кверисет прилетают разные модели (фильтр при этом одинаковый - по дате создания)

amureki
21.08.2017
09:33:37
Massimo
21.08.2017
09:50:07
Вопрос, если я хочу на сервере использовать pg бд а у меня на компе sqlite то я могу скинуть файлы, без БД, а потом запустить pg БД?

sic transit
21.08.2017
09:50:44
Лучше не надо, используй идентичное. Это то, где уже Docker рулит.

Massimo
21.08.2017
09:54:50
нужно будет данные перенести в pg
А если мне не нужны данные из бд на компе в pg на сервере?

Bob
21.08.2017
09:55:37
А если мне не нужны данные из бд на компе в pg на сервере?
еще проще: ./manage.py migrate на свежей базе и все по порядку

sic transit
21.08.2017
09:56:00
А если мне не нужны данные из бд на компе в pg на сервере?
У тебя же тренировочный проект? Делай что хочешь, но не привыкай. Не практикуется такое.

Massimo
21.08.2017
09:56:19
А как менять директорию в unix? в винде это cd directory/

Bob
21.08.2017
09:56:46
Ну так.
чем больше натворишь, чем больше шишек, тем больше опыта ?

Massimo
21.08.2017
09:57:34
Спасибо)

Artem
21.08.2017
10:01:12
Massimo
21.08.2017
10:01:34
Да, оно )

-bash: ./manage.py: Permission denied Хотя зашел с root

Eugene
21.08.2017
10:11:27
python manage.py

Artem
21.08.2017
10:22:01
Massimo
21.08.2017
10:22:21
Google
Bob
21.08.2017
11:20:19
Windows - все этим сказано

Григорий
21.08.2017
11:24:27
Может пора начать использовать средства виртуализации? что бы перестать вот этой хренью страдать на винде

А еще вопрос, что вас заствляет сидеть на винде?

Nikita
21.08.2017
11:25:43
эксельчик)

Григорий
21.08.2017
11:27:00
ну так есть же гугл документы, опен офис

Admin
ERROR: S client not available

sic transit
21.08.2017
11:27:18
Учим все задом-надом: Фреймворк->Программирование->Технологии->Английский. Извращение какое то, имхо.

Клим
21.08.2017
11:44:18
Ворд оф танкс ) для проганья поднят сервер на Raspberry )

А еще вопрос, что вас заствляет сидеть на винде?

Massimo
21.08.2017
11:46:56
Я еще прогю в вба

Гугл доки имеют свои скрипты которые я изучать не хочу. Компания сидит тоже на экселе

У нас тут консерватизм и архаичность

Alexander
21.08.2017
11:48:07
VirtualBox + Ubuntu ?

Massimo
21.08.2017
11:48:14
а то что python3 это не вина винды. Я сижу через putty и ему плевать на винду

У меня на сервере изначально зачем то стоит два питона

Григорий
21.08.2017
11:50:21
Я как бы не зря написал про средства виртуализации, у вас какой то зоопарк твориться, в котором без бутылки не разобрать, вы вместо того что бы писпть код, тратите уйму времени на то что бы все это полетело

попробуйте вагрант, что бы у вас локальная разработка была максимально идентична к продакшену

Massimo
21.08.2017
11:51:58
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN Вот почему он мне показывает это если я его в .conf поменял на мой айпи? python3 manage.py migrate django.db.utils.OperationalError: could not connect to server: Connection refused Is the server running on host "*.*.*.*" and accepting TCP/IP connections on port 5432? Может ли быть такое что сервак не дает TCP/IP подключение?

Google
Erzh
21.08.2017
11:54:11
А что такое "*.*.*.*" ?

А понял

Рустам
21.08.2017
12:47:41
Ребят, почему джанга может не генерить права в админке для моей модели?

Denis
21.08.2017
12:49:53
В contenttypes модель есть?

Massimo
21.08.2017
12:56:28
Можно ли синхронизировать проект в PyCharm с файлами на сервере?

b0g3r
21.08.2017
12:56:45
можно

односторонне

deployment вкладка в настройках

Massimo
21.08.2017
12:57:45
Оп. Отлично. А для первого проекта норм будет если я в sqlite проект оставлю, а то как небыло так и нет доступа у pg к протоколам?

b0g3r
21.08.2017
12:58:06
зависит, очевидно, от размера проекта

ну и база не должна быть общей в дев и на сервере

Massimo
21.08.2017
12:59:10
почему?

b0g3r
21.08.2017
12:59:34
потому что 1) синхронизация односторонняя 2) потому что не должна быть :)

Massimo
21.08.2017
12:59:55
ааааааааааааа

Страница 477 из 1273