Форум сайта python.su
Вкраце: есть как бы чат с регистрацией и авторизацией пользователей, есть модель
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})
Офлайн
Пользователя берите из request.user
И посмотрите в сторону Class-based views
Офлайн
Это понятно, а как его потом приделать к form, чтобы записать всё в базу через form.save(), с целью минимизации телодвижений? Там же в form ещё html-разметка. Есть способ какой-нибудь? Что-нибудь типа form.append(request.user)
Отредактировано S (Июль 8, 2012 11:07:20)
Офлайн
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)
Офлайн
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})
Офлайн
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
Офлайн
SИменно
Или exclude нужно убирать и делать поля формы скрытыми
Офлайн
Тогда и время будет также в скрытом поле в той же форме, я правильно понимаю? И каждый раз будет передаваться одно и тоже значение времени - то, в которое была сгенерирована форма для отправления сообщения. А если она не меняется? Ифрейм там, или ещё как.
И я конечно только начинаю разбираться, но передача имени пользователя из скрытого поля мне тоже кажется странной.
Щас разбираюсь как jquery chat работает, смотрю, чего там.
Офлайн
SЗачем тебе передавать время на сторону пользователя? Сделай в поле модели где время
Тогда и время будет также в скрытом поле в той же форме, я правильно понимаю? И каждый раз будет передаваться одно и тоже значение времени - то, в которое была сгенерирована форма для отправления сообщения. А если она не меняется? Ифрейм там, или ещё как.
И я конечно только начинаю разбираться, но передача имени пользователя из скрытого поля мне тоже кажется странной.
Щас разбираюсь как jquery chat работает, смотрю, чего там.
Офлайн