2015-02-04 2 views
0

После входа пользователя пользователь может отправить форму. При нажатии кнопки отправки данные хранятся в БД, но как я должен подключать эту информацию к подчиненному пользователю.Как сохранить данные после регистрации пользователей в DJANGO

я должен был бы код, а также структуру новой БД

Вид запуска в Джанго. Любая помощь будет оценена!

Я включил пользователя как внешний ключ в модель CustomizeRequest, но теперь как я могу заполнить эту информацию?

Точный сценарий: После входа в систему, когда он приходит к contactUs.html, он представляет форму, в которой указывается количество путешественников. Этот номер хранится в БД. Но как мне связать каждый из этих чисел с представленным пользователем?

models.py

class CustomizeRequest(models.Model): 
    user = models.ForeignKey(User) 
    travellers = models.CharField(max_length=2) 

    def __str__(self): 
     return self.travellers 

contactUs.html

<form method="POST" class="form-horizontal"> 
{% csrf_token %} 
<div class="btn-group" data-toggle="buttons"> 
{% for radio in crform.travellers %} 
    <label class="btn btn-default {% if radio.choice_label = '1' %}active{% endif %}" for="{{ radio.id_for_label }}"> 
     {{ radio.choice_label }} 
     {{ radio.tag }} 
    </label> 
{% endfor %} 
</div> 
<button type="submit" class="btn btn-default btn-block btn-warning">SUBMIT</button> 
</form> 

views.py

def contactUs(request): 
    if request.method=="POST": 
     form = CustomizeRequestForm(request.POST) 
     form.save() 
    else: 
     form = CustomizeRequestForm() 
    context_dict = {'form': form} 
    return render(request, 'tour/contactUs.html', context_dict) 

ответ

0

основы catavaran ответа (с чеком, чтобы увидеть, если форма является действительной):

from django.contrib.auth.decorators import login_required 
from django.shortcuts import redirect, render 

@login_required 
def contactUs(request):  
    form = CustomizeRequestForm(data=request.POST or None) 

    if request.method == "POST": 
     if form.is_valid(): 
      customize_request = form.save(commit=False) 
      customize_request.user = request.user 
      customize_request.save() 
      return redirect('.') 
     else: 
      pass # could add a notification here 

    context_dict = {'form': form} 
    return render(request, 'tour/contactUs.html', context_dict) 
+0

благодарит @ François. моя проблема, кажется, решена – dreamer

+0

, так что это правильный способ связать все входы, данные этим пользователем, этому конкретному пользователю – dreamer

0

Зарегистрированный пользователь доступен as request.user Недвижимость. Вы можете получить несохраненный экземпляр модели, используя form.save(commit=False) трюк, установите user поле, а затем сохранить экземпляр базы данных:

from django.contrib.auth.decorators import login_required 
from django.shortcuts import redirect, render 

@login_required 
def contactUs(request):  
    if request.method == "POST": 
     form = CustomizeRequestForm(request.POST) 
     if form.is_valid(): 
      customize_request = form.save(commit=False) 
      customize_request.user = request.user 
      customize_request.save() 
      return redirect('.') 
    else: 
     form = CustomizeRequestForm() 
    context_dict = {'form': form} 
    return render(request, 'tour/contactUs.html', context_dict) 
+0

at 'customize_request = form.save (commit = False)' Я получаю сообщение об ошибке: ** Не удалось создать CustomizeRequest, потому что данные не подтверждены. ** – dreamer

+0

Я забыл о 'is_valid()' вызов. Сожалею. И покажите код класса 'CustomizeRequestForm'. Я подозреваю, что ваш шаблон html может быть недействительным. – catavaran

+0

в CustomizeRequestForm я должен был упомянуть 'поля = (« путешественники »,)', поскольку в модели были поля «путешественники» и «пользователь». Я сделал это, и проблема, похоже, была решена. – dreamer

Смежные вопросы