@pydjango

Страница 461 из 1273
Olzhas
15.08.2017
19:50:46
Всем привет. Есть приложение на python2 + django, который берет данные с IBM Netezza и PostgreSQL. Падает при попытке декодировать данные из базы, так как получает cp1251 и пытается в utf8 обработать. Где можно этот момент исправить? Сам я django вижу 2й день и в лоб найти решение не могу, стактрейс тоже не очень информативен, выкидывает ошибку “DjangoUnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xc0 in position 0: invalid start byte. You passed in <django.forms.boundfield.BoundField object at 0x050C33F0>”. Если поможет, вот ссылка на полный трейс https://gist.github.com/anonymous/180f208e44b784e73b4148e31cbdbf55

Dmitriy
15.08.2017
19:50:52
:) удалил таблицу вручную из БД

Olzhas
15.08.2017
20:23:54
Google
Massimo
15.08.2017
20:24:37
Olzhas
15.08.2017
20:24:41
Я конечно попытался тупо 2to3 переработать, но без понимания как все работает плохо вышло

Massimo
15.08.2017
20:25:22
Ivan
16.08.2017
05:03:40
Какие возможные решения, кроме попробовать перелопатить базу под utf8 и перехода на 3й питон?
А зачем в этом решении 3й питон? Достаточно только базы. И то, в Django кодировка базы настраивается, можете явно сказать, что у вас cp1251. https://stackoverflow.com/questions/13686767/django-database-charset-issue

Massimo
16.08.2017
05:11:58
https://dpaste.de/UfKd#L
У кого нибудь есть идеи как фильтрануть по другой модели

СО предлагает переписать def save() модели, но чуется что есть уже впиленный вариант

»> c = Plan.objects.get(pk='100').drcom AttributeError: 'Plan' object has no attribute '_drcom_cache' »> c = Plan.objects.get(pk='100').drcom_id 1

Set
16.08.2017
06:23:32
привет! подскажите с чем может быть связана ошибка 'builtin_function_or_method' object has no attribute '__getitem__' ругается на if self.kwargs.get['slug']: qs = qs.filter(section__slug=self.kwargs['slug'])

на python 2.7

Senpos
16.08.2017
06:24:35
или self.kwargs['slug'] но предпочтительнее как выше написали

Dmitriy
16.08.2017
06:24:59
Вангую дело в get

Google
Set
16.08.2017
06:25:57
или self.kwargs['slug'] но предпочтительнее как выше написали
так вон вообще не будет работать… если не работает get то что использовать ? Оо

Senpos
16.08.2017
06:26:16
Что значит "не работает"?

Pavel
16.08.2017
06:26:44
ну и на всякий случай, разница между [] и .get(): >>> {}.get('a') >>> {}['a'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'a' >>>

Set
16.08.2017
06:28:35
посмотри внимательно на скобки после гет
спасибо что то не обратил внимание ???

Massimo
16.08.2017
06:43:17
class Plan(models.Model): driver = models.ForeignKey('Driver', on_delete=models.CASCADE, related_name="driver") drcom = models.ForeignKey('Driver', to_field="company") Почему он продолжает в drcom мне показывать driver ref, если я установил to_field параметр? Разве он не должен показывать параметры Driver.company?

Dan
16.08.2017
06:44:13
нет

Massimo
16.08.2017
06:44:56
нет
А как сделать чтобы он мне в drcom показывал Driver.company?

Dan
16.08.2017
06:45:11
переименовывать поле

Massimo
16.08.2017
06:45:38
related_name?

Dan
16.08.2017
06:45:41
company = models.ForeignKey('Driver)

Massimo
16.08.2017
06:46:41
company = models.ForeignKey('Driver)
Так он мне будет показывть то же что и driver

Dan
16.08.2017
06:47:11
нет

Senpos
16.08.2017
06:47:16
company = models.ForeignKey('Driver)
А насколько целесообразно делать еще одну связь, если она уже доступна по цепочке Plan - > Driver - Company?

Dan
16.08.2017
06:47:21
что туда положишь то и будет показывать

Massimo
16.08.2017
06:47:52
class Driver(models.Model): last_name = models.CharField(max_length=150) first_name = models.CharField(max_length=150) patronomy = models.CharField(max_length=150) license_plate = models.CharField(max_length=30) cellphone = models.CharField(max_length=15) passport = models.CharField(max_length=400) company = models.ForeignKey('Carrier', on_delete=models.CASCADE, unique=True) def __str__(self): return '%s %s %s' % (self.last_name, self.first_name, self.patronomy) У меня на return стоит его полное имя

Dan
16.08.2017
06:48:26
А насколько целесообразно делать еще одну связь, если она уже доступна по цепочке Plan - > Driver - Company?
ну как вариант в таблице переписки отправитель и получатель два поля оба ссылаются на пользователя

Massimo
16.08.2017
06:48:30
Нужна инфа из атрибута, которое не на вовращается при обращении к модели

Dan
16.08.2017
06:49:24
ничего не понял

Massimo
16.08.2017
06:51:52
Ну при обращении к Driver он выдает мне его имя

Google
Dan
16.08.2017
06:52:00
так

Massimo
16.08.2017
06:52:05
атрибут company он не выдает

Dan
16.08.2017
06:52:22
ну

Massimo
16.08.2017
06:52:27
я пилю FK через to_field (drcom называется)

Dan
16.08.2017
06:52:47
так

Massimo
16.08.2017
06:52:49
он выдает мне id атрибута company в Driver

Dan
16.08.2017
06:53:40
те у тебя два поля которые ссылаются на один объект ?

Massimo
16.08.2017
06:54:07
Но когда я вывожу на хэтомэль form.drcom он мне выдает опять имена Driver

те у тебя два поля которые ссылаются на один объект ?
Да но на разные артибуты этой модели

Dan
16.08.2017
06:54:37
plan.driver.company.id так не проще ?

Massimo
16.08.2017
06:54:58
Я так делал

Только как это в форму запихнуть чтобы он показывал?

Dan
16.08.2017
06:55:38
смотря форму чего

и как должно показываться

Massimo
16.08.2017
06:56:47
Тут проблема в том что я хочу фильтровать по компаниям которые привязаны к водилам, но есть одно но. Company не является привязанной к Plan, соответственно он не будет по ней фильтровать, отсюда я сделал вывод, что нужно чтобы у Plan был атрибут company.

Только беда заключается в том что по дефолту company должно ставиться в зависимости от того какой driver

Dan
16.08.2017
06:57:24
так тебе надо форму фильтра сделат ?

Massimo
16.08.2017
06:57:43
Да

class PlanFilter(django_filters.FilterSet): class Meta: model = Plan fields = ['driver', 'des_from', 'des_to', 'date',]

Я заююзал либу django_filters

Google
Dan
16.08.2017
06:58:27
ну это ваще не так делается =)

и то что ты добавил дополнительное поле совсем совсем неправильно =)

Massimo
16.08.2017
06:59:10
Так я еще ничего не добавил)

Eugene
16.08.2017
06:59:22
Было бы все так просто :))

Dan
16.08.2017
07:00:18
drcom = models.ForeignKey('Driver', to_field="company") я про это

Massimo
16.08.2017
07:00:53
drcom = models.ForeignKey('Driver', to_field="company") я про это
Ну он мне вроде как показывал id компании

Dan
16.08.2017
07:02:43
смотри у тебя есть plan ты его свзязываешь с driver, что теоретически не правильно

Admin
ERROR: S client not available

Dan
16.08.2017
07:03:10
и вытаскивать данные driver нужно через эту связь

тем более в фильтре

я бы в классе формы добавил кастомное поле company, заполнял бы его отдельным queryset, задавал бы дефолтным значение instance объекта а в фильтре просто вытаскивал бы либо через method либо через driver__company

Alexey
16.08.2017
07:06:47
кто-нибудь юзал импорт экспорт либу в джанговской админке?

Eugene
16.08.2017
07:07:31
Django import export называется

Alexey
16.08.2017
07:07:43
да верно

Sergey
16.08.2017
07:44:02
странно, сейчас по одному url шаблону дёргается шаблон другой.

может отступы какие-то нарушил

request <WSGIRequest: GET '/finance/all/'> resolver<RegexURLResolver 'desc.urls' (None:None) ^/> resolver_match ResolverMatch(func=finance.views.finance_detailview

хотя url(r'^finance/all/$', all_finance_listview),

вчера работало)

Google
Pavel
16.08.2017
07:48:57
Senpos
16.08.2017
07:48:59
Покажи другие урлы

Sergey
16.08.2017
07:49:32
url(r'^finance/(?P<id>[\w-]+)/$', finance_detailview), #url(r'^finance/$', finance_listview), url(r'^finance/all/$', all_finance_listview), url(r'^finance/all(?P<page>[0-9]+)/$', all_finance_listview),

точно

с id наверное совпадает

может detail к url приписать? finance/detail/123

Senpos
16.08.2017
07:51:00
Просто поставь урл с all выше остальных

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

Dan
16.08.2017
07:52:07
[\w-]+ попадает и all а так как это условие первое оно первым и используется

Sergey
16.08.2017
07:52:08
круто! помогло!

буду знать, благодарю

Sergey
16.08.2017
07:55:25
нет, только цифры

Dan
16.08.2017
07:56:23
ну тогда (?P<id>[\w-]+) -> (?P<id>\d+)

тогда и переставлять ничего не надо

Sergey
16.08.2017
07:58:05
d+ значит цифры. понял!

Dan
16.08.2017
07:58:33
да

Senpos
16.08.2017
07:58:44
Если надо протестировать регэкспы, то вот хороший сайт https://regex101.com/

Там и описание, и разбор того, что конкретный регэксп делает и подсветка

Sergey
16.08.2017
07:59:58
о классный инструмент

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