def add_modify_entry(request, pk = None): if request.method == "POST": if pk: #пк указан, в ссылке, это редактирование _entry = Entry.objects.get(pk = pk) form_entry = EntryForm(data = request.POST, instance = _entry, prefix = "entry") form_tag = TagsForm(data = request.POST, prefix = "tag", all_tags = Tag.objects.all() ) else: form_entry = EntryForm(request.POST, prefix = "entry") form_tag = TagsForm(data = request.POST, prefix = "tag", all_tags=Tag.objects.all() ) if form_entry.is_valid() and form_tag.is_valid(): en = form_entry.save() #delete all old tags for this entry old_tags = en.get_tags() if len(old_tags): for tag in old_tags: tag.entrys.remove(en) tag.save() #add new tags new_tags = form_tag.cleaned_data["tags"] if len(new_tags): for new_tag in new_tags: try: #уже такой есть tag = Tag.objects.get(name = new_tag) except ObjectDoesNotExist: #новый tag = Tag(name = new_tag, ) tag.save() tag.entrys.add(en) #незнаю нужно ли еще раз сохранять? tag.save() #TODO добавить сообщение что все хорошо, все сохранено return HttpResponseRedirect( reverse("view_entry", args=[en.pk]) ) else: if pk: #пк указан, в ссылке, это редактирование _entry = Entry.objects.get(pk = pk) form_entry = EntryForm(instance = _entry, prefix = "entry") if _entry.get_tags() : form_tag = TagsForm(prefix = "tag", initial= {"tags": _entry.get_tags()}, all_tags=Tag.objects.all()) else: form_tag = TagsForm(prefix = "tag", all_tags= Tag.objects.all()) else: form_entry = EntryForm(initial = {'author': request.user.id}, prefix = "entry") form_tag = TagsForm(prefix = "tag", all_tags = Tag.objects.all()) return render_to_response('blog/add_entry.html', locals(), context_instance=RequestContext(request))
def add_modify_entry(request, pk = None): #TODO delete it after dev print request.user if request.method == "POST": if pk: #пк указан, в ссылке, это редактирование _entry = Entry.objects.get(pk = pk) form_entry = EntryForm(request.POST, instance = _entry, prefix = "entry") if _entry.get_tags() : form_tag = TagForm(request.POST, prefix = "tag", instance = _entry.get_tags()[0] ) else: form_tag = TagForm(request.POST, prefix = "tag") else: form_entry = EntryForm(request.POST, prefix = "entry") form_tag = TagForm(request.POST, prefix = "tag") if form_entry.is_valid() and form_tag.is_valid(): en = form_entry.save() tg = Tag.objects.filter(name = form_tag.cleaned_data['name']) if tg: #exist tg = tg[0] tg.entrys.add(en.pk) tg.save() else: #not exist tg = form_tag.save() tg.entrys.add(en) tg.save() return HttpResponseRedirect("/") else: if pk: #пк указан, в ссылке, это редактирование _entry = Entry.objects.get(pk = pk) form_entry = EntryForm(instance = _entry, prefix = "entry") if _entry.get_tags() : form_tag = TagForm(prefix = "tag", instance = _entry.get_tags()[0] ) else: form_tag = TagForm(prefix = "tag") else: form_entry = EntryForm(initial = {'author': request.user.id}, prefix = "entry") form_tag = TagForm(prefix = "tag") return render_to_response('blog/add_entry.html', locals(), context_instance=RequestContext(request))
def add_modify_entry(request, pk=None): if request.method == "POST": if pk: #пк указан, в ссылке, это редактирование _entry = Entry.objects.get(pk=pk) form_entry = EntryForm(data=request.POST, instance=_entry, prefix="entry") form_tag = TagsForm(data=request.POST, prefix="tag", all_tags=Tag.objects.all()) else: form_entry = EntryForm(request.POST, prefix="entry") form_tag = TagsForm(data=request.POST, prefix="tag", all_tags=Tag.objects.all()) if form_entry.is_valid() and form_tag.is_valid(): en = form_entry.save() #delete all old tags for this entry old_tags = en.get_tags() if len(old_tags): for tag in old_tags: tag.entrys.remove(en) tag.save() #add new tags new_tags = form_tag.cleaned_data["tags"] if len(new_tags): for new_tag in new_tags: try: #уже такой есть tag = Tag.objects.get(name=new_tag) except ObjectDoesNotExist: #новый tag = Tag(name=new_tag, ) tag.save() tag.entrys.add(en) #незнаю нужно ли еще раз сохранять? tag.save() #TODO добавить сообщение что все хорошо, все сохранено return HttpResponseRedirect(reverse("view_entry", args=[en.pk])) else: if pk: #пк указан, в ссылке, это редактирование _entry = Entry.objects.get(pk=pk) form_entry = EntryForm(instance=_entry, prefix="entry") if _entry.get_tags(): form_tag = TagsForm(prefix="tag", initial={"tags": _entry.get_tags()}, all_tags=Tag.objects.all()) else: form_tag = TagsForm(prefix="tag", all_tags=Tag.objects.all()) else: form_entry = EntryForm(initial={'author': request.user.id}, prefix="entry") form_tag = TagsForm(prefix="tag", all_tags=Tag.objects.all()) return render_to_response('blog/add_entry.html', locals(), context_instance=RequestContext(request))