Форум сайта python.su
день добрый!
сделал, чтобы со страницы можно было вносить изменения в форму
html:
{% if edit_note %} <div id="editNote" class="newNote" style="display: block;"> <form action="/notebook/" method="post">{% csrf_token %} <input type="submit" value="Изменить запить № {{ edit_note.id }}"> <input type="hidden" name="edit_note" value="1"> <input type="hidden" name="num_note" value="{{ edit_note.id }}"> <p> <label for="id_surname">фамилия:</label> <input id="id_surname" type="text" name="surname" maxlength="100" value={{ edit_note.surname }}> </p> <p> <label for="id_name">имя:</label> <input id="id_name" type="text" name="name" maxlength="100" value={{ edit_note.name }}> </p> <p> <label for="id_fathername">отчество:</label> <input id="id_fathername" type="text" name="fathername" maxlength="100" value={{ edit_note.fathername }}> </p> </form> </div> {% endif %}
if request.method == "POST" and request.POST['edit_note'] == '1': nn = Notebook.objects.get(id = request.POST['num_note']) nn.surname = request.POST['surname'], nn.name = request.POST['name'], nn.fathername = request.POST['fathername'], nn.save() return redirect('/notebook/')
Офлайн
Покажи модель
Офлайн
class Notebook(models.Model): """ записная книжка """ owner = models.ForeignKey(User, null=True, related_name='notebooks') cat = models.CharField(max_length=255, verbose_name='категория') surname = models.CharField(max_length=255, verbose_name='фамилия') name = models.CharField(max_length=255, verbose_name='имя') fathername = models.CharField(max_length=255, verbose_name='отчество') number = models.CharField(max_length=255, verbose_name='тефонный номер') city = models.CharField(max_length=255, verbose_name='город', null = True, blank = True) street = models.CharField(max_length=255, verbose_name='улица', null = True, blank = True) house = models.CharField(max_length=255, verbose_name='дом', null = True, blank = True) room = models.CharField(max_length=255, verbose_name='квартира', null = True, blank = True) class Meta: verbose_name = 'записная книга' verbose_name_plural = 'записная книга' def __unicode__(self): return (" %s, %s, %s ") % (self.surname, self.name, self.fathername)
Офлайн
Вообще странный подход, зачем эти танцы, ведь лучше, правильней и проще сделать форму от модели.
Да и вот эти
<input type="hidden" name="edit_note" value="1">
<input type="hidden" name="num_note" value="{{ edit_note.id }}">
Офлайн
согласен строчку <input type=“hidden” name=“edit_note” value=“1”> можно убрать, а вот как обойтись без <input type=“hidden” name=“num_note” value=“{{ edit_note.id }}”>? И как всё таки быть с unicodom?
Офлайн
А как ты в контекст добавляешь edit_note? Покажи всю вьюшку.
Офлайн
# coding: utf-8 import datetime, time from django.db import models from django.contrib.auth.models import User from userena.models import UserenaBaseProfile class UserProfile(UserenaBaseProfile): user = models.OneToOneField(User) birthday = models.DateField( blank = True, null = True ) weight = models.IntegerField( blank = True, null = True ) height = models.IntegerField( blank = True, null = True ) created_at = models.DateTimeField( auto_now_add = True ) updated_at = models.DateTimeField( auto_now = True ) def user_post_save(sender, instance, **kwargs): (profile, new) = UserProfile.objects.get_or_create(user=instance) models.signals.post_save.connect(user_post_save, sender=User) class Prioritet(models.Model): name = models.CharField(max_length=50, verbose_name='приоритет') def __unicode__(self): return self.name class Meta: verbose_name='Приоритеты' verbose_name_plural='Приоритеты' class Master(models.Model): login = models.CharField(max_length=255, unique= True) password = models.CharField(max_length=50) online = models.BooleanField() class Meta: verbose_name = 'Юзер' verbose_name_plural = 'Юзеры' def __unicode__(self): return self.login class Tasks(models.Model): """ поставленные задачи """ task = models.CharField(max_length=255, verbose_name='задача') dateAdded = models.DateTimeField(default = datetime.datetime.now() + datetime.timedelta(hours = 6)) class Meta: verbose_name = 'задача' verbose_name_plural = 'задачи поставленные' def __unicode__(self): return self.task class TasksDone(models.Model): """ выполненные задачи """ task = models.CharField(max_length=255, verbose_name='задача') dateDone = models.DateTimeField(auto_now_add=True) activePeriod = models.IntegerField(blank = True, null = True) class Meta: verbose_name = 'задача (устар)' verbose_name_plural = 'задачи выполненые (устар)' def __unicode__(self): return self.task class Notebook(models.Model): """ записная книжка """ owner = models.ForeignKey(User, null=True, related_name='notebooks') cat = models.CharField(max_length=255, verbose_name='категория') surname = models.CharField(max_length=255, verbose_name='фамилия') name = models.CharField(max_length=255, verbose_name='имя') fathername = models.CharField(max_length=255, verbose_name='отчество') number = models.CharField(max_length=255, verbose_name='тефонный номер') city = models.CharField(max_length=255, verbose_name='город', null = True, blank = True) street = models.CharField(max_length=255, verbose_name='улица', null = True, blank = True) house = models.CharField(max_length=255, verbose_name='дом', null = True, blank = True) room = models.CharField(max_length=255, verbose_name='квартира', null = True, blank = True) class Meta: verbose_name = 'записная книга' verbose_name_plural = 'записная книга' def __unicode__(self): return (" %s, %s, %s ") % (self.surname, self.name, self.fathername) class TasksCats(models.Model): cat = models.CharField(max_length=255, verbose_name='категория') class Meta: verbose_name = 'категория' verbose_name_plural = 'категории' def __unicode__(self): return self.cat class Plans(models.Model): """ задачи на новый лад """ master = models.ForeignKey(Master) prioritet = models.ForeignKey(Prioritet, null = True) cat = models.ForeignKey(TasksCats) task = models.TextField(verbose_name='План') dateCreate = models.DateTimeField(auto_now_add=True, verbose_name='дата создания') dateDone = models.DateTimeField(null=True, verbose_name='дата выполнения') dateActual = models.DateTimeField(verbose_name='дата актуальности', blank = True, null = True) comment = models.TextField(verbose_name='комментарий', blank = True, null = True) class Meta: verbose_name = 'план' verbose_name_plural = 'планы' def __unicode__(self): return (" %s, %s ") % (self.task, self.cat)
Офлайн
# coding: utf-8 import datetime from django.contrib import auth from django.contrib.auth.decorators import login_required from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render_to_response, redirect from django.core.context_processors import csrf from django.template.context import RequestContext from django.views.generic.simple import direct_to_template from phone_book.models import Tasks, TasksDone, Notebook, Master, Plans from phone_book.forms import Auth, f_notebook from django import forms form = f_notebook() @login_required def main(request): """ главная страница проекта """ return render_to_response('index.html', RequestContext(request)) @login_required def auth(request): if request.method == 'POST': # если была попытка авторизации error = '' global login login = request.POST['login'] password = request.POST['pass'] logins =[] l = Master.objects.all().values('login') for item in l: # список всех логинов logins.append(item['login']) if login in logins: p = Master.objects.get(login = login) if p.password == password: message = 'Wellcome %s' % login else: message = 'Wrong password' else: message = 'login %s do not exist' % login else: login = False return redirect(request.META['HTTP_REFERER']) @login_required def exit(request): ''' Выход пользователя ''' message = False login = False tp = request.META['HTTP_REFERER'] tp = tp.replace('http://localhost:8000', '') tp = tp.replace('/', '') tp = str(tp) tp = tp + '.html' if tp == 'exit.html': tp = 'index.html' return render_to_response(tp, {'login': login, 'message': message}) @login_required def plans(request): """ задачи на новый лад """ #plans = request.user.plans.all() return render_to_response('plans.html', {'plans': plans}, RequestContext(request)) @login_required def tasks(request): """ отображение списка задач по данному проекту. Задачи беруться из БД , а добавляются с этой же страницы """ result = {} result.update(csrf(request)) try: if request.POST['new_task'] and request.POST['new_task'] != '': new_task = request.POST['new_task'] tasks = Tasks.objects.all() tasks = Tasks(task = new_task) tasks.save() return redirect('/tasks/') except: pass tasks = Tasks.objects.all() tasksDone = TasksDone.objects.order_by('-id') result.update({'tasks': tasks, 'tasksDone': tasksDone}) return render_to_response('tasks.html', result, RequestContext(request)) @login_required def tasks_selected(request, task_id): """ отправляем задачу в список выполненных """ # получаем выполненную задачу и дату добавления this = Tasks.objects.get(id = task_id) dateAdded = str(this.dateAdded) delta = datetime.timedelta(hours=2) dateNow = str(datetime.datetime.now() -delta) # dateDelta = dateNow.replace(tzinfo=None) - dateAdded.replace(tzinfo=None) # dateDelta = dateDelta.seconds # открываем таблицу выполненных задач для заполнения tasks_done = TasksDone.objects.all() # добавляем новую запись (т.е. выполненную задачу) tasks_done = TasksDone(task = this.task) tasks_done.save() # удаляем выполненную задачу из поставленных this.delete() return redirect('/tasks/') @login_required def tasks_done(request, task_id): """ возвращаем задачу в доработку """ # получаем якобы выполненную задачу this = TasksDone.objects.get(id = task_id) # открываем таблицу поставленных задач для заполнения tasks = Tasks.objects.all() # добавляем новую запись (т.е. выполненную задачу) tasks = Tasks(task = this.task) tasks.save() # удаляем выполненную задачу из поставленных this.delete() return redirect('/tasks/') @login_required def notebook(request): """ записная книжка """ try: if request.method == "POST" and request.POST['add_note'] == '1': if ' ' in request.POST['cat']: new_cat = request.POST['cat'].replace(' ', '_') else: new_cat = request.POST['cat'] nn = Notebook( owner = request.user, cat = new_cat, surname = request.POST['surname'], name = request.POST['name'], fathername = request.POST['fathername'], number = request.POST['number'], city = request.POST['city'], street = request.POST['street'], house = request.POST['house'], room = request.POST['room'], ) nn.save() return redirect('/notebook/') except: pass if request.method == "POST" and request.POST['edit_note'] == '1': nn = Notebook.objects.get(id = request.POST['num_note']) nn.cat = request.POST['cat'], nn.surname = request.POST['surname'], nn.name = request.POST['name'], nn.fathername = request.POST['fathername'], nn.number = request.POST['number'], nn.city = request.POST['city'], nn.street = request.POST['street'], nn.house = request.POST['house'], nn.room = request.POST['room'], nn.save() return redirect('/notebook/') notebook = request.user.notebooks.all() cats_list = [] for item in notebook: if item.cat not in cats_list: cats_list.append(item.cat) return render_to_response( 'notebook.html', {'notebook': notebook, 'form': form, 'cats_list': cats_list}, RequestContext(request) ) @login_required def note_sort(request, sort): """ фильтр категорий """ if sort == 'all_cats': notebook = request.user.notebooks.all() else: notebook = request.user.notebooks.filter(cat = sort) cats_list = [] n = request.user.notebooks.values('cat') for item in n: if item['cat'] not in cats_list: cats_list.append(item['cat']) return render_to_response('notebook.html', {'notebook': notebook, 'cats_list': cats_list, 'form': form}, RequestContext(request)) def note_order(request, order): """ сортировка по фамилии """ if order == 'id': notebook = Notebook.objects.all().order_by('id') if order == 'name': notebook = Notebook.objects.all().order_by('name') if order == 'surname': notebook = Notebook.objects.all().order_by('surname') if order == 'fathername': notebook = Notebook.objects.all().order_by('fathername') if order == 'number': notebook = Notebook.objects.all().order_by('number') if order == 'cat': notebook = Notebook.objects.all().order_by('cat') return render_to_response('notebook.html', {'notebook': notebook, 'form': form,}) def purse_del(request, cat_del): notebook = Notebook.objects.filter(cat = cat_del) notebook.delete() return redirect('/notebook/') def del_note(request, note): n = Notebook.objects.get(id = note) n.delete() return redirect('/notebook/') def edit_note(request, note): notebook = Notebook.objects.all() edit_note = Notebook.objects.get(id = note) cats_list = [] n = request.user.notebooks.values('cat') for item in n: if item['cat'] not in cats_list: cats_list.append(item['cat']) return render_to_response('notebook.html', {'notebook': notebook, 'edit_note': edit_note, 'form': form, 'cats_list': cats_list, }, RequestContext(request))
Отредактировано cutwater (Окт. 23, 2012 12:50:40)
Офлайн
makcstroi
что за facepalm.jpg?
Офлайн
def note_order(request, order): """ сортировка по фамилии """ if order == 'id': notebook = Notebook.objects.all().order_by('id') if order == 'name': notebook = Notebook.objects.all().order_by('name') if order == 'surname': notebook = Notebook.objects.all().order_by('surname') if order == 'fathername': notebook = Notebook.objects.all().order_by('fathername') if order == 'number': notebook = Notebook.objects.all().order_by('number') if order == 'cat': notebook = Notebook.objects.all().order_by('cat') return render_to_response('notebook.html', {'notebook': notebook, 'form': form,})
def note_order(request, order): notebook = Notebook.objects.all().order_by(order) return render_to_response('notebook.html', {'notebook': notebook, 'form': form,})
Отредактировано FishHook (Окт. 23, 2012 13:56:56)
Офлайн