2015-09-26 74 views
2

我正在尝试使用django的web应用程序;该应用程序有几个由用户提交的表单,我想知道是否有办法告诉哪个用户提交了表单,以便我可以将表单输入绑定到该特定用户。该表格用于“预约”,就好像登录的患者正在预约去看医生一样。 型号:允许用户使用django表单创建“约会”

 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)) 
+0

在'auto_now_add = True'形式中使用'DateTimeField'没有任何意义。 – ozgur

回答

1

如果用户登录,那么你可以简单地使用:

user=request.user 

在你views.py。如果用户未登录,它将返回AnonymousUser,因此首先确保用户已通过身份验证。

if request.user.is_authenticated(): 
    #Do stuff 
+0

感谢您的帮助 – Stalfurion

1

您正在使用的实例不当,这是因为当你想更新数据库中的特定行。您需要创建没有用户字段的表单(将exclude = ['user',]添加到表单f.ex的元中),然后更改if request.method =“POST”的内容:

form_obj = CreateAppointmentForm(request.POST).save(commit=False) 
form_obj.user = request.user 
form_obj.save()