Но почему я не могу написать метод from_string так:cls вместо явного Date позволит наследнику Date (напр. AztecaDate - дата по календарю ацтеков) порождать именно AztecaDate.
Date(1, 1, 2019) # конструктор с сигнатурой (int, int, int)
Date("1.1.2019") # другой конструктор с сигнатурой (str)
В питоне можно добиться подобного, но ручками, анализируя состав аргументов Date.__init__, что неудобно, громоздко и нунафиг. Уж лучше забабахать Date.from_string. Но это неизбежно в динамическом языке - ведь C++ должен знать всё про аргументы конкретных вызовов конструкторов на этапе компиляции, а мы можем в рантайм творить что угодно )))для чего нужен staticmethod, если это уже не метод, а просто функция, и я могу вынести ее из класса.Да, можете. Я думаю, тут действует логика лучшей читаемости и логика экономии пространства имён:
from date import *
вы не получите охапку непонятных имён.# медленно
l = []
for i in range(100500):
l.append(i)
# чуть быстрее )))
push = l.append
for i in range(100500):
push(i)
class DirectoryItemSerializer(serializers.ModelSerializer):
def create(self, validated_data):
directoryId = validated_data['directory'].id
isActive = True
code = validated_data['code']
directoryItems = DirectoryItem.objects.filter(directory=directoryId, is_active=isActive, code=code)
if directoryItems.count() != 0:
item = directoryItems[0]
if item.name == validated_data['name'] and item.short_name == validated_data['short_name']:
raise EntityExistException()
else:
item.is_active = False
item.save()
return DirectoryItem.objects.create(**validated_data)
else:
return DirectoryItem.objects.create(**validated_data)
class Meta:
model = DirectoryItem
fields = '__all__'
from django.contrib.admin import AdminSite
from django.contrib.auth.models import Group, User
from django.contrib.auth.admin import GroupAdmin, UserAdmin
class MyAdminSite(AdminSite):
def get_app_list(self, request):
"""
Return a sorted list of all the installed apps that have been
registered in this site.
"""
app_dict = self._build_app_dict(request)
# Sort the apps alphabetically.
app_list = sorted(app_dict.values(), key=lambda x: x['name'].lower())
# Sort the models alphabetically within each app.
#for app in app_list:
# app['models'].sort(key=lambda x: x['name'])
return app_list
admin.site = MyAdminSite()
# Register your models here.
admin.site.register(TypeProfile)
admin.site.register(TypeFacade)
admin.site.register(Price)
admin.site.register(PaintColor)
admin.site.register(PatinaColor)
admin.site.register(Materials)
admin.site.register(Category)
admin.site.register(Products)
#Регистрируем стандартные
admin.site.register(Group, GroupAdmin)
admin.site.register(User, UserAdmin)
{% load static %}
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>{{ page_title }}</title>
<link rel="stylesheet" href="{% static "css/main.css" %}">
<link rel="shortcut icon" type="image/png" href="{% static "favicon.ico" %}">
....
{% url 'socialauth_begin' 'vk-oauth' %}
{% url 'social:begin' 'vk-oauth2' %}
{% url 'social:begin' 'auth_backend' %}
. Создаст ссылку на example.com/куда_установлены_social.apps.django.urls/login/auth_backend/. Есть ли порог когда использование ОРМ становится неоправданым/оправданым? Где он?
У меня в приложении есть модуль который работает с бд Solr
Каждый документ может имеет поле parent в котором сохранен ид-родителя, дальше ид-прародителя, дальше прапрародителя итд.
бд в режиме read-only
Итд. Иногда какая-то дополнительная трансформация.
tell application "System Events" to keystroke "c" using {command down}