معاينة نموذج Django - إضافة المستخدم إلى النموذج قبل حفظ

StackOverflow https://stackoverflow.com/questions/625800

  •  05-07-2019
  •  | 
  •  

سؤال

class RegistrationFormPreview(FormPreview):
    preview_template    = 'workshops/workshop_register_preview.html'
    form_template       = 'workshops/workshop_register_form.html'

    def done(self, request, cleaned_data):
        # Do something with the cleaned_data, then redirect
        # to a "success" page. 
        # data = request.POST.copy()
        # data['user_id'] = u'%s' % (request.user.id)
        # cleaned_data['user'] = u'%s' % (request.user.id)
        #f = self.form(cleaned_data)
        #f = self.form(data)
        #f.user = request.user


        f = self.form(request.POST)
        f.save()

        pdb.set_trace()
        return HttpResponseRedirect('/register/success')

كما ترون ، لقد جربت بعض الطرق ، وقد تم التعليق عليها. من الواضح أن المهمة بسيطة: أضف المستخدم من الطلب إلى النموذج قبل حفظ ، ثم حفظ.

ما هي طريقة العمل المقبولة هنا؟

هل كانت مفيدة؟

المحلول

إذا تعذر تعديل المستخدم ، فأنا أقول أنه لا ينبغي أن يتم تضمينه في النموذج في المقام الأول.

اما الطريقة، باستخدام commit جدال لمنع الكائن الناتج الذي يتم حفظه على الفور يجب أن يعمل (على افتراض FormPreview الاستخدامات ModelForm):

obj = form.save(commit=False)
obj.user = request.user
obj.save()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top