Последние сообщения

Страницы: 1 ... 7 8 [9] 10
81
Django / Обратные связи django
« Последний ответ от DigitalMag Апреля 07, 2019, 04:19:43 pm »
У меня есть модель Friends, которая является ManyToMany для User:

    class Friends(models.Model, MixinModel):
        by = models.ForeignKey(User, related_name="from_friend")
        friend = models.ForeignKey(User, related_name="to_friend")
        approve = models.CharField(max_length=2, choices=RELATION_STATUS, default=State.No)

Внутри ListView я переопределяю get_queryset для того, чтобы отфильтровать по тем User, которым была отправлена заявка в друзья от текущего пользователя. Запрос recipients = qs.filter(to_friend__approve=State.No) верно возвращает всех пользователей, заявки которым были отправлены. Пытаюсь делать по аналогии для текущего пользователя:

recipients = qs.filter(from_friend__by = me)Но получаю нулевой результат, почему?
82
Django / Re: Профилировщик Django
« Последний ответ от DigitalMag Апреля 07, 2019, 11:56:36 am »
Читал на хабре, что line_profiler имеет огромный оверхед и скрипт, выполняемый без профилирования за 1 сек, с ним - 30 сек. А вот django-silk посмотрю. Любопытно
83
Django / Re: Профилировщик Django
« Последний ответ от AdminUser Апреля 07, 2019, 11:55:05 am »
Можете посмотреть в сторону line_profiler. И чем вас не устроил django-silk? Вот ссылка на их репозиторий. По-моему, вполне неплохое решение
84
Django / Профилировщик Django
« Последний ответ от DigitalMag Апреля 07, 2019, 10:49:45 am »
Кто-нибудь пробовал hotshot для профилирования джанго?

Довольно интересная статья. Судя по скрину, умеет профилировать каждый метод. Прикольно ведь
85
Спасибо!
86
Цитата:
Но все равно не видит поля css_class

Если вникнуть в суть, наверняка в цепочке наследования AuthenticationForm есть предок, который не вызывает базовый конструктор родителя - считай это определенное ограничение на множественное наследование для AuthenticationForm

Поэтому вам надо использовать class SignForm(HTMLMixin, AuthenticationForm):
Что касается другой ошибки, то я внимательно посмотрел ваш код и нашел в нем такую ошибку: ваш класс называется HTMLMixin, а в конструкторе вы вызываете HTMLForm. Это, вероятно, просто ваша опечатка.

87
Сделал HTMLMixin типом:

class HTMLMixin(object):Но все равно не видит поля css_class

Если поменять их местами, то получаю ошибку на строке:

super(SignForm, self).__init__(*args, **kwargs)
Цитата:
super(type, obj): obj must be an instance or subtype of type

Сам конструктор HTMLMixin вызывается, но при попытке вызвать из него конструктор родителя получаю такую ошибку
88
В python если вы в конструкторе не переопределяете конструктор вручную, будет автоматически вызван конструктор родителя первой ветки наследования. И далее согласно последовательности __mro__. Единственное, что может вам помешать вызвать конструктор родителя - это его переопределение в классе-предке без вызова конструктора-предка, например:

class A(object): pass

class B(object):
    def __init__(self):
        self.b = 1
        print "bbbbbbbbbbb"

class C(A,B):
    def __init__(self):
        super(C,self).__init__()
        print "cccccccccccc"
        #print self.a
        print self.b

def main():
    c = C()

выведет:

Цитата:
bbbbbbbbbbb
cccccccccccc
1
Но если мы переопределим конструктор в A без вызова super:

class A(object):
    def __init__(self):
        pass

то получим ошибку:

Цитата:
AttributeError: 'C' object has no attribute 'b'      
      

Если же переопределить грамотно:

class A(object):
    def __init__(self):
        super(A,self).__init__()
        print "AAAAAAAAAAAAA"

то все конструкторы вызовутся по порядку без ошибок.

Так же для 2.7 важно, чтобы все объекты в цепочке mro были наследованы от object - т.е. их классы были типами, а не  экземплярами classobj. О чем я говорю:

class B:
    def __init__(self):

        self.b = 1
        print "BBBBBBBBBBBB"

Наследование от такого класса не будет вызывать его конструктор, т.е. наследует только атрибуты класса - все методы и поля класса, но не экземпляра. Это тоже важный паттерн
89
У меня есть класс:

class HTMLMixin:

    def __init__(self, sub = 'def', cssclass = '', *args, **kwargs):                 # request=None,

        super(HTMLForm, self).__init__(*args, **kwargs)

        self.request = kwargs.pop('request', None)       
        self.submit = sub
        self.css_class = cssclass
        self.enctype = kwargs.get('enctype','')

Я от него наследуюсь:

class SignForm(AuthenticationForm, HTMLMixin):
    pass
Но получаю ошибку
Цитата:
'SignForm' object has no attribute 'css_class'
. Получается, что SignForm не вызывает конструктор HTMLMixin автоматически?

90
Python / Re: pypy: ошибка при установке pillow
« Последний ответ от DigitalMag Марта 25, 2019, 10:00:15 am »
Попробуйте сделать следующие вещи:
1. Попробуйте сменить версии pillow
2. Сменить версию pypy (маловероятно, что поможет, но мало ли)
3. Попробовать через другой pip
4. Попробовать откомпилировать с ключом --disable-zlib
Страницы: 1 ... 7 8 [9] 10