irfanpule / django-form-surveys

Django form survey is an application Django to easier create form survey and easy integrated for your project.
MIT License
56 stars 19 forks source link

[Ask Feature] Add Key or Identifier #10

Closed muhamadanjar closed 2 years ago

muhamadanjar commented 2 years ago

Hello, i have some problem get specific questions or answer, can you add key or identifier to get value question or answer. Currently i have problem to get that data.

Thanks

irfanpule commented 2 years ago

Hi @muhamadanjar, can you explain detail feature what you need? You can explain with example cases.

muhamadanjar commented 2 years ago

i have simple case after submit survey i want to sending mail

irfanpule commented 2 years ago

I see, maybe if you have one field type email in a survey, you can filter question by type_field (type_field).

I suggest you to inherited class CreateSurveyFormView and override post method.

.....

class NewCreateSurveyFormView(CreateSurveyFormView):

    def post(self, request, *args, **kwargs):
        form = self.get_form()
        self.object = self.get_object()
        if form.is_valid():
            form.save()
            # call func `_get_email_value`
            recipient = self._get_email_value()
            # then you call func to send email
            messages.success(self.request, f'Successfully {self.title_page}')
            return self.form_valid(form)
        else:
            messages.error(self.request, 'Something wrong')
            return self.form_invalid(form)

    def _get_email_value(self):
       """ this function to get email value"""
        survey = self.get_object()
        for user_reviews in survey.useranswer_set.all():
            for answer in user_reviews.answer_set.all():
                if answer.question.type_field == TYPE_FIELD.email:
                    return answer.get_value
        return None

I realize that this is not the simplest way. I will explore this case and make it a new feature.