• Как перейти на платный аккаунт на heroku?

    В бесплатной версии доступно 600 часов рабочего времени.
    Еще ~400 можно получить, привязав карточку. В итоге будет 1000 часов, чего на месяц хватит с головой.
    Год назад можно было привязать виртуалку qiwi (в моем случае) но, вероятно, подойдут любые - главное чтобы были верифицированы.
  • Как перегрузить is?

    AlexNest
    @AlexNest Куратор тега Python
    mkone112, не смог сходу подобрать более подходящее слово в контексте аналогии, отсюда и кавычки
  • Как перегрузить is?

    AlexNest
    @AlexNest Куратор тега Python
    Roman Kitaev, я отвечал на ответ mkone112.
    Замечание к тому, что is это одна из фундаментальных конструкций языка и автору не нравится, что не переписывая исходники, желаемого эффекта не добиться.
  • Как перегрузить is?

    AlexNest
    @AlexNest Куратор тега Python
    mkone112, странная логика. Все-равно, что "обижаться" на то, что рыбы не могут летать.
  • Как вывести переменную из функции которая в цикле?

    AlexNest
    @AlexNest Куратор тега Python
    Чисто ради интереса - для чего нужна функция, которая 10к раз пересоздает список и добавляет в него одни и те же значения, если срабатывает одно и то же условие?
  • Как вывести все данные из БД?

    AlexNest
    @AlexNest Куратор тега Python
    Domohod, нет, так-же 4 байта, ( 2^32). только у обычного int значения от -214...48 до +214...47, у positive (который на уровне sql - unsigned) - от нуля до 429...95.
  • Как вывести все данные из БД?

    AlexNest
    @AlexNest Куратор тега Python
    Что в этом плохого? Без этого я бы не смог сделать ограничение.

    В общем случае - ничего, в моих примерах для каждого юзера также создается запись.
    Основное отличие в том, что таблицы, получаемые на выходе нормализованы (о чем я уже писал) и, к тому-же, занимают меньше места:
    В оригинальной модели - 3 поля типа INT, каждое из которых занимает по 4 байта т.е. 12. (которые будут дублироваться с каждой записью)
    В моих вариантах в случае с choises 8 байт (макс. длина) и при желании можно ужать до 4, если в качестве основы брать также инт. В случае с транзитной таблицей размер будет больше, но при этом но это уже особенность данного подхода.
    (И да, несмотря на то, что несколько лишних байт могут показаться не страшными, в реальных условиях, где количество записей может составлять сотни миллионов, эти байты разрастаются в солидные мега- и гига-)

    Пользователь может проголосовать только 1 раз и не сможет изменить голос(такова задумка) это я сделал при помощи условия, которое не скинул.

    Все что можно ограничить на уровне бд/модели нужно ограничить именно там. С одной стороны - потому-что что базы данных, что модели в фреймвоках, обладают довольно внушительным количеством средств для ограничений, написанных более грамотно.
    С другой стороны - чем "ниже" заданно ограничение, тем меньше вероятность, что оно где-то нарушится.
    Вот к примеру
    voter = models.ForeignKey(User, null=True, blank=True, verbose_name='Пользователь', 
        on_delete=models.PROTECT)

    Связь с юзером идет через ForeignKey и в, теории, для этого пользователя можно создать несколько вариантов выбора. И если ограничение написано в представлении, то на админку, к примеру, оно не распространяется. Ровно как и на другие представления, в том числе и написанные Васей Пупкиным спустя полгода.
  • Как вывести все данные из БД?

    AlexNest
    @AlexNest Куратор тега Python
    AlexNest, собственно переписать несколькими путями:
    1. Если нужно периодически добавлять варианты:
    Использовать транзитую таблицу:
    • цвета: (ID, название)
    • юзер (стандартная)
    • транзитная, состоящая из внешних ключей (цвет_id ( отношение многие к одном), юзер_id (отношение один к одному))

    Если расширение не планируется - вынести варианты в choises
    class Choose(models.Model):
        colors= [
            ('black', 'black'),
            ('white', 'white'),
            ('purple', 'purple'),
        ]
        variants = models.CharField(choices=colors, max_length=8)
        voter = models.OneToOneField(UserAccount, null=True, blank=True, verbose_name='Пользователь',
        on_delete=models.PROTECT)
    
        def __str__(self):
            return f'{self.variants} - {self.voter}'

    В этом случае для подсчета голосов придется использавать Count внутри annotate()/agregate(). Но с этим уже сами разбирайтесь.
  • Как вывести все данные из БД?

    AlexNest
    @AlexNest Куратор тега Python
    Domohod, ну вот опять же - работа с выборкой это буквально основа основ.
    В случае с .all() value будет содержать не один объект (как в случае с get/get_or_create, который вы использовали), к данным которого обратиться по ключу как к словарю, QuerySet, который нужно перебирать в цикле для доступа к данным.

    {% for variant in value %}
        {{ variant.count_purple }}
    {% endfor %}

    С другой стороны, у Вас откровенно корявая модель - судя по тому, что в ней указанно поле voter и исходя из куска кода из views, для каждого юзера создается новая запись, но это еще полбеды. Более того, если юзер решает изменить голос, то старое значение не обнуляется, что вероятно, должно было бы произойти, так еще и новое не приравнивается к единице, а увеличивается на нее.
    Следовательно, спустя несколько изменений там вместо "0 1 0 user" будет что-то вроде "3 5 3 user".
    А это уже заявка на серьезные проблемы с нормализацией БД
  • Как вывести все данные из БД?

    AlexNest
    @AlexNest Куратор тега Python
    Domohod, вопрос про доки остается в силе.
  • Почему данные с формы не сохраняются в бд?

    AlexNest
    @AlexNest Куратор тега Python
    Василий Иванов, ну летать на самолете без крыла тоже не запрещено.
    В UserCreationForm идет сравнение P1 с P2 и если они не идентичны, то выдает ошибку.
    Вот так
    def clean_password2(self):
            password1 = self.cleaned_data.get("password1")
            password2 = self.cleaned_data.get("password2")
            if password1 and password2 and password1 != password2:
                raise forms.ValidationError(
                    self.error_messages['password_mismatch'],
                    code='password_mismatch',
                )
            return password2

    ошибка не вылетает

    А что должно выводить? Судя по коду пустую строку.
    else:
                error = ''

    Под вывести ошибку я имел ввиду что-то вроде
    этого
    <br>
    {% if form.errors %}<br>
        {% for field in form %}<br>
            {% for error in field.errors %}<br>
                <br>
                    {{ error|escape }}<br>
                <br>
            {% endfor %}<br>
        {% endfor %}<br>
        {% for error in form.non_field_errors %}<br>
            <br>
                {{ error|escape }}<br>
            <br>
        {% endfor %}<br>
    {% endif %}<br>
  • Почему данные с формы не сохраняются в бд?

    AlexNest
    @AlexNest Куратор тега Python
    1. Почему объявлено только одно поле для пароля?
    2. Ошибки выводить не пробовали?
  • Как фильтровать данные одной формы из другой?

    mcrack,
    С помощью js сначала делал, но понял, что не совсем удобно, если форма, которая ниже не прошла валидацию, то фильтры сбрасываются, я бы хотел, чтобы в GET параметре они сохранились, тем самым и фильтры на местах.

    Опять же, без контекста не понимаю, почему не сохранять выбранные варианты в local storage?
    Буквально вторая ссылка по запросу: js сохранить вариант select
  • Как фильтровать данные одной формы из другой?

    Если формы привязанны к моделям со связью по внешнему ключу, то можно использовать эту вещь.
    Если данные связаны иначе, то нужно использовать js.
  • Почему у видео-карт NVIDIA столько разных производителей (ASUS, MSI, GIGABYTE и др)?

    Для сравнения - есть процессор Intel. И больше никаких фирм MSI/ASUS/-Intel. Только Intel.

    Ну, до середины 90-х, а если быть точным, то до появления первых пентиумов, инелы вполне охлотно продавали лицензии на выпуск процов (В том числе и АМД) по своей технологии (а это как минимум три поколения i2/3/486)
    Что косается видеокарт, то сравнение крайне не объективное - проц это хоть и сложное с точки зрения архетиктуры устройство, но по факту представляет одну цельную деталь.
    В видеокарте же есть множество отдельных компонентов:
    • Видеочип (тоже проц, но заточеный чисто под обработку графики)
    • Видеопамять,
    • Биос
    • Куча других, более мелких компонентов

    А Нвидиа, как уже было сказано, разрабатывает чипы для видеокарт и продает право создавать на их основе готовые видеокарты.
  • Является ли скорость в 25Мбит/сек максимальной для wi-fi соединения на TL-WR740N?

    AlexNest
    @AlexNest Автор вопроса
    На компе, по кабелю - стабильные 90МБит+ в тестах и 10Мб+ при закачке (писал об этом в посте).
    Соседских сетей почти нет - шткуки четыре, две из которых даже не везде ловятся. Хотя, как Вы верно заметили в комментарии, помимо redmi ecть очень условно "свежий" китайксий ноунейм, старый alcatel.
    Правда, гугление подсказало, что нужно включить WMM, что действительно дало прирост почти вдвое (с 25 до 44Мбит).
  • Является ли скорость в 25Мбит/сек максимальной для wi-fi соединения на TL-WR740N?

    AlexNest
    @AlexNest Автор вопроса
    Поддерживает. И странно было бы, если пусть и бюджетный, но не ноунейм смартфон (redmi 9C) 2020го года не поддерживал спецификацию конца 2009-го
    P.S. Под обновлением имел в виду покупку нового
  • Как сделать отдельную страничку для каждого товара на django?

    URL route '' uses parameter name 'id/' which isn't a valid Python identifier.

    Питону не нравится id (стандартная функция).
    (можно заменить к примеру на pk - primary key или article_id)