Форум сайта python.su
0
Вкраце: есть как бы чат с регистрацией и авторизацией пользователей, есть модель
class ChatMessage(models.Model): message_text = models.CharField(max_length=3000) message_time = models.DateTimeField() message_author = models.CharField(max_length=30)
class SendMessage(forms.ModelForm): class Meta: model = ChatMessage exclude = ('message_author', 'message_time',) widgets = { 'message_text': Textarea, }
def ShowMessages(request): if request.method == 'POST': print 'post method\n' form = SendMessage(request.POST) print form messages = ChatMessage.objects.all() return render_to_response('chat/templates/messages.html', {'messages': messages}) else: messages = ChatMessage.objects.all() return render_to_response('chat/templates/messages.html', {'messages': messages})
Офлайн
0
Пользователя берите из request.user
И посмотрите в сторону Class-based views
Офлайн
0
Это понятно, а как его потом приделать к form, чтобы записать всё в базу через form.save(), с целью минимизации телодвижений? Там же в form ещё html-разметка. Есть способ какой-нибудь? Что-нибудь типа form.append(request.user)
Отредактировано S (Июль 8, 2012 11:07:20)
Офлайн
568
message_author = models.CharField(max_length=30)
from django.contrib.auth.models import User ..... ..... message_author = models.ForeignKey(User)
form=MyForm(initial={'message_author':request.user})
Отредактировано FishHook (Июль 9, 2012 05:40:43)
Офлайн
0
FishHookНе понял юмора, а почему не такmessage_author = models.CharField(max_length=30)from django.contrib.auth.models import User ..... ..... message_author = models.ForeignKey(User)
Ну а потом все совсем простоform=MyForm(initial={'message_author':request.user})
Спасибо, с работы приду, буду разбираться.
Офлайн
0
FishHookА если в классе формы написано:
Ну а потом все совсем простоform=MyForm(initial={'message_author':request.user})
exclude = ('message_author', 'message_time',)
def ShowMessages(request): if request.method == 'POST': print 'method: POST\n' form = SendMessage(initial={'message_author':request.user, 'message_text': 'initial message_text', 'message_time': 'message_time'}) print form
Офлайн
568
SИменно
Или exclude нужно убирать и делать поля формы скрытыми
Офлайн
0
Тогда и время будет также в скрытом поле в той же форме, я правильно понимаю? И каждый раз будет передаваться одно и тоже значение времени - то, в которое была сгенерирована форма для отправления сообщения. А если она не меняется? Ифрейм там, или ещё как.
И я конечно только начинаю разбираться, но передача имени пользователя из скрытого поля мне тоже кажется странной.
Щас разбираюсь как jquery chat работает, смотрю, чего там.
Офлайн
568
SЗачем тебе передавать время на сторону пользователя? Сделай в поле модели где время
Тогда и время будет также в скрытом поле в той же форме, я правильно понимаю? И каждый раз будет передаваться одно и тоже значение времени - то, в которое была сгенерирована форма для отправления сообщения. А если она не меняется? Ифрейм там, или ещё как.
И я конечно только начинаю разбираться, но передача имени пользователя из скрытого поля мне тоже кажется странной.
Щас разбираюсь как jquery chat работает, смотрю, чего там.
Офлайн