class Vospitately(models.Model):
fio = models.CharField(max_length=40)
dolshnost = models.CharField(max_length=80, default='Должность..')
image = models.ImageField()
vospet_crushek = models.ForeignKey(Cruski', related_name='vospitately')
def __str__(self):
return self.fio
def kruzhki(request):
q = Cruski.objects.all()
return render(request,'krushki.html',{'kruzki':q})
{% block kruzhki %}
{% for krug in kruzki %}
<p><b>{{ krug.name }}</b></p>
{% for vospet in krug.vospitately.all %}
<p> {{ vospet.fio }}</p>
{% endfor %}
<p>{{ krug.description }}</p>
<p>{{ krug.price }}</p>
{% endfor %}
from django.views.generic import TemplateView
urlpatterns = patterns('',
url(r'^about/$', TemplateView.as_view(template_name='about.html')),
)
class UserProfile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, unique=True)
organization = models.ForeignKey(Organization, verbose_name=_('Organization'))
...
AUTH_PROFILE_MODULE = 'app.UserProfile'
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
organization = models.ForeignKey(Organization, verbose_name=_('Organization'))
>>> from django.contrib.auth.models import User
>>> user = User.objects.get(pk=1)
>>> dir(user)
from django.contrib.auth import get_user_model
User = get_user_model()
user = User.objects.get(pk=1)
dir(user)
Один вариант вижу кастомизировать менеджер модели и сравнивать текущий дейтайм с указанным.нормальное решение.
class MyModel(Model):
# .....
objects = Manager()
ready_for_pub = CustomManager()
function getData(){
var url = $('.gridly').attr('req');
$.get(url, function(data){
var json = JSON.parse(data)
$.each(json, function(i, obj) {
$('.gridly').append('<div class="brick small">'+obj.fields.title +'<a href="."><img src="/media/'+obj.fields.head_pic+'"'+'></a><a class="delete" slug="'+obj.fields.slug+'"href="#">×</a></div>');
$('.gridly').gridly({
base: 60, // px
gutter: 20, // px
columns: 10
});
});
});
}
$(document).ready( getData );
<input id="cancel_changes" class="btn btn-success col-sm-6 col-xs-12 margin-bottom col-sm-offset-1 col-xs-offset-0" value="Отменить" type="button" onclick="getData()">
# forms.py
# ...
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
# views.py
# ...
def my_view(request, id):
instance = get_object_or_404(MyModel, id=id)
form = MyForm(request.POST or None, instance=instance)
if form.is_valid():
form.save()
return redirect('next_view')
return direct_to_template(request, 'my_template.html', {'form': form}
zigen: Разобрался
class MyClassDetailView(DetailView):
model = User
slug_field = 'username'
def get_initial(self):
return {'news': self.get_object(), 'author': self.request.user}
def get_context_data(self, **kwargs):
kwargs['form'] = CommentForm(self.request.POST, initial=self.get_initial())
return super().get_context_data(**kwargs)
/* Функция асинхронной загрузки хеадера */
function getHeader() {
$.post('modules/constructor.php', /* Аппелируем к серверному скрипту по указаному адресу */
{ 'action': "header", 'lang': lang }, /* Передаем параметры на сервер */
function(data) { /* Callback - параметр анонимня функция. Вызывается при удачном запросе */
$('div#header') /* Выбираем #header - но правильнее $('#header'), ибо 2 блока с одним id не правильно */
.empty().append(data); /* Очищает выбраный блок и дописывает к нему полученные данные */
}
).done(function() { /* Событие выполняется после удачного выполнения запроса */
getFooter() /* Вызов запроса Fotter */
})
}
/* далее аналогично но для footer */
function getFooter() {
$.post('modules/constructor.php',
{ 'action': "footer", 'lang': lang },
function(data) {
$('#footer').empty().append(data);
}
).done(function() {
getScriptHandF(); /* Здесь была синтаксическая ошибка: отсутствие замыкающего ";" */
getContent(content)
})
}
function getContent(cont) {
$.post('modules/constructor.php',
{ 'content': cont, 'lang': lang, 'device': devi },
function(data) {
$('#content-wrapper').empty().append(data);
}
).done(function() {
/* Далее человек питался сделать прелоадинг картинок. НО! */
/* Картинки уже начались загружатся после выполнения
колбеков из загрузок getContent, getHeader, getFoоter */
var paths = []; /* Готовим массив для прелоадинга картинок */
var images = $('body').find('img'); /* Выбираем все картинки */
images.each(function() { /* Пробегаемся по всем картинкам */
paths.push($(this).attr('src')); /* Записываем ссылку на картинку в масив */
});
preloadImages(paths, function () { /* Вызывает preloadImages Описания процедуры нет */
$("html,body").animate({"scrollTop":0},200); /* Анимирует скроллинг если страница прокручена на верх страницы */
$('#preload').fadeOut(1000); /* Анимирует прозрачность кроющего блока #preload */
getScript(); /* Вызывает getScript */
if (cont=="home") getSlider(); /* Вызывает getSlider если страница домашняя */
});
})
}