2015-09-26 73 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()