Как обновить модель без формы - PullRequest
0 голосов
/ 26 мая 2020

Я могу обновлять модели с помощью форм в POST, не беспокойтесь, но у меня есть функция, которая создает PDF-файл, и мне нужно добавить путь к моей модели, но я не могу понять, как.

models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    image = models.ImageField(default='profile_pics/default.jpg', upload_to='profile_pics')
    questionnaire = models.FileField(upload_to='pdfs\\questionnaire_pdfs', null=True)

views.py

def final_question(request):
    if request.method == 'POST':
        form = FinalQuestionForm(request.POST, request.FILES, instance=request.user.finalquestion)

        if form.is_valid():
            form.save()

            # here i generate pdf containing all answers to questionnaire
            # i then return the file name and need to save it in my users profile/questionnaire field
            pdf_filename = utils.generate_questionnaire_pdf(request)
            [..save the file to questionnaire..]


            return redirect('questionnaire_complete')
[..cont..]
class FinalQuestionForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(FinalQuestionForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'post'
        self.helper.add_input(Submit('submit', 'Submit'))

    class Meta:
        model = FinalQuestion
        fields = ['final_question']

Спасибо.

- edit - я думаю, что мое поле анкеты должно быть charfield, поскольку я просто удерживая имя файла. Я до сих пор не знаю, как сохранить его в модель, хотя

1 Ответ

0 голосов
/ 26 мая 2020

Я думаю, вам следует добавить еще один FileField, например «ответы», к вашей модели с null = True. При создании PDF-файла ответов просто обновите уже созданный экземпляр этим файлом.

- edit - Вы можете назначить form.save () переменной, которая будет иметь значение сохраненного экземпляра. тогда вы можете обновить этот экземпляр.

u = form.save
pdf_filename = utils.generate_questionnaire_pdf(request)
u.questionnaire = pdf_filename
u.save()
...