用户登录后,用户可以提交表单。单击“提交”按钮,数据将存储在数据库中,但如何将此信息连接到提交用户。
我需要代码以及新db
的结构有点从django开始。 任何帮助将不胜感激!!!
我已将用户作为外键包含在CustomizeRequest
模型中,但现在我该如何填写此信息?
完全情景:用户登录后,一旦他来到contactUs.html
,他就会提交一份表格,告知旅客人数。该号码存储在DB中。但是现在如何将这些数字中的每一个连接到提交的用户?
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 :(得分:0)
已记录的用户可用作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)
答案 1 :(得分: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)