бро, во-первых, спасибо. Но раз уж это моковое интервью (т.е. для пользы недоджунов, которые будут смотреть), надо было таки все неправильные ответы сразу исправлять))
тут видимо вопрос дискуссионный. Перед __init__ выполняется метод __new__ который принимает в аргументы сам класс cls и создает экземпляр класса в памяти. А потом __init__ наполняет этот инстанс аттрибутами. Наверное можно и так и так сказать. Но вроде как если копнуть глубоко, то __new__ больше подходит под конструктор
Да там и новый объект в виде тройки создан будет. Т.е. по сути правильно, но по факту все маленькие числа прединициализированны, тройка не создастся, она уже есть.
Product.objects.annotate(is_liked=ExpressionWrapper(Q(users__isnull=False) & Q(users__name=user.name), output_field=BooleanField())).values('id', 'is_liked') запрос на добавление поля к продукту, состоит ли продукт в избранных
если хочешь, становись. много людей, которые в возрасте, стали джунами. Главное курсы по типу как на скиллбокс не покупай и упорно трудись, шедший путь осилит))))).