允许用户使用 django 表单创建 "appointment"
Allow users to create an "appointment" using a django form
我正在尝试开发一个 django webapp;该应用程序有几个由用户提交的表单,我想知道是否有办法告诉哪个用户提交了表单,以便我可以将表单输入绑定到该特定用户。该表格用于 "appointment",就好像登录的患者正在预约去看医生一样。
型号:
class Appointment(models.Model):
user = models.OneToOneField(User)
schedule = models.ForeignKey(Schedule)
doctorName = models.CharField(max_length=50)
date = models.DateTimeField(auto_now_add=True)
表格:
class CreateAppointment(forms.ModelForm):
class Meta:
model = Appointment
fields = ("doctorName", "date")
查看:
def create_appointment(request):
if request.POST:
form = CreateAppointmentForm(request.POST, instance=request.user.profile)
if form.is_valid():
form.save()
return render_to_response('index.html', context_instance=RequestContext(request))
else:
form = CreateAppointmentForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('create_appointment.html', args, context_instance=RequestContext(request))
您使用实例不当,它是为了更新数据库中的特定行。您需要创建没有用户字段的表单(将 exclude=['user',] 添加到表单 f.ex 的元数据中)然后更改 if request.method=[= 的内容13=]一点:
form_obj = CreateAppointmentForm(request.POST).save(commit=False)
form_obj.user = request.user
form_obj.save()
如果用户已登录,那么您可以简单地使用:
user=request.user
在你的 views.py 中。如果用户未登录,它将 return AnonymousUser,因此首先确保用户已通过身份验证。
if request.user.is_authenticated ():
#Do stuff
我正在尝试开发一个 django webapp;该应用程序有几个由用户提交的表单,我想知道是否有办法告诉哪个用户提交了表单,以便我可以将表单输入绑定到该特定用户。该表格用于 "appointment",就好像登录的患者正在预约去看医生一样。 型号:
class Appointment(models.Model):
user = models.OneToOneField(User)
schedule = models.ForeignKey(Schedule)
doctorName = models.CharField(max_length=50)
date = models.DateTimeField(auto_now_add=True)
表格:
class CreateAppointment(forms.ModelForm):
class Meta:
model = Appointment
fields = ("doctorName", "date")
查看:
def create_appointment(request):
if request.POST:
form = CreateAppointmentForm(request.POST, instance=request.user.profile)
if form.is_valid():
form.save()
return render_to_response('index.html', context_instance=RequestContext(request))
else:
form = CreateAppointmentForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('create_appointment.html', args, context_instance=RequestContext(request))
您使用实例不当,它是为了更新数据库中的特定行。您需要创建没有用户字段的表单(将 exclude=['user',] 添加到表单 f.ex 的元数据中)然后更改 if request.method=[= 的内容13=]一点:
form_obj = CreateAppointmentForm(request.POST).save(commit=False)
form_obj.user = request.user
form_obj.save()
如果用户已登录,那么您可以简单地使用:
user=request.user
在你的 views.py 中。如果用户未登录,它将 return AnonymousUser,因此首先确保用户已通过身份验证。
if request.user.is_authenticated ():
#Do stuff