
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
:) удалил таблицу вручную из БД

Massimo
15.08.2017
20:00:50

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

Massimo
16.08.2017
05:11:58
СО предлагает переписать 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

Dmitriy
16.08.2017
06:24:25

Pavel
16.08.2017
06:24:31

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

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

Dan
16.08.2017
06:47:11
нет

Senpos
16.08.2017
06:47:16

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

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

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
да верно

Massimo
16.08.2017
07:07:46

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
круто! помогло!
буду знать, благодарю

Dan
16.08.2017
07:55:10

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
о классный инструмент