允许用户使用 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