from copy import deepcopy
def copy_instance_state(src_obj, dst_obj, field_map={}):
for src_field_name in dir(src_obj):
if src_field_name.startswith('__'):
continue
dst_field_name = src_field_name if src_field_name not in field_map else field_map[src_field_name]
setattr(dst_obj, dst_field_name, deepcopy(getattr(src_obj, src_field_name)))
class A:
a = 1
b = 2
c = 3
class B:
a = 0
b = 0
z = 0
a = A()
b = B()
copy_instance_state(a, b, {'c': 'z'})
with recursive r as (
select
id, parent_id, name
from catalog_category
where id = 8
union
select
cc.id, cc.parent_id, cc.name
from catalog_category as cc
join r
on cc.parent_id = r.id
)
select id, name from r where id <> 8;
<!-- Статический импорт с помощью директивы -->
<%@ include file="filename" %>
<!-- Динамический импорт с помощью тега -->
<jsp:include page="filename"/>
<!-- Импорт с помощью JSTL -->
<c:import url="filename" />
{{ post1.body|safe }}
from itertools import product
d = {
'param_abdomen': ['thin', 'normal', 'large'],
'param_chest': ['strong', 'normal', 'corpulent'],
'param_shoulders': ['straight', 'normal', 'fallen'],
'param_stance': ['straight', 'normal', 'curved']
}
keys = sorted(d)
variants = [dict(zip(keys, p)) for p in product(*(d[k] for k in keys))]
@require_POST
@login_required
@transaction.atomic()
@reversion.create_revision()
def add_something(request):
form = SomeModelForm(request.POST)
if form.is_valid():
instance = form.save()
reversion.set_user(request.user)
reversion.set_comment(u'Что-то добавлено')
return redirect(instance)
else:
return render(request, 'form.html', {'form': form})
versions = Version.objects.get_for_object(instance)
for n, version in enumerate(versions, start=1):
print(u'В версии №{} от {}'.format(n, version.revision.date_created))
for field_name, field_value in version.field_dict.items():
print(u'поле "{}" имело значение "{}"'.format(field_name, field_value))
print()
versions = Version.objects.get_for_object(instance)
versions[0].revision.revert()
class MessageView(CreateView):
model = Message
form_class = MessageForm
template_name = 'mssgs/message_form.html'
success_url = 'messages'
def get_initial(self):
initial = super(MessageView, self).get_initial()
group_id = self.kwargs['group']
initial['group'] = Group.objects.get(pk=group_id)
return initial