在Django中,如何向请求.POST保存前的数据?

2024-09-29 21:37:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图允许用户手动输入一个文本字段,如果他们有许可证信息,或者让它自动生成(基于表单信息)如果其原始内容。在

如果我的测试信息被正确地保留在“许可证”窗体中,因为“打印”命令在“打印”窗体中被保留为空。问题是更新的信息没有保存在数据库中。经过研究,这似乎是一个不变性的问题,这就是为什么我添加了request.POST.copy()并测试了定义{}的注释部分。在

这是我的视图.py在

def STLupload(request):
    if request.method == 'POST':
        form = NewUpload(request.POST, request.FILES)
        data = request.POST.copy()

        if form.is_valid():
            #Dis gona need alot of work
            firstname = request.user.first_name
            lastname = request.user.last_name
            displayname = request.user.display_name
            email = request.user.email


            if (firstname or lastname == "None"):
                if displayname == "None":
                    liscname = email
                else:
                    liscname = '%s %s' % (firstname, lastname)
            else:
                liscname = displayname


            filetitle = request.POST.get(
                'Title'
            , '')


            lisc = '%s %s' % (filetitle, liscname)

            if data['LicenseTag'] == "":

                '''
                mutable = request.POST._mutable
                request.POST._mutable = True
                request.POST['LicenseTag'] =  lisc
                request.POST._mutable = mutable
                '''

                data['LicenseTag'] = lisc
                print (request.POST.get(
                'LicenseTag'
                , ''))
                print ("blank")
            else:

            print (form)


            #Save current username
            comment = form.save(commit=False)
            comment.user = request.user

            comment.save()

            #Flash success message
            messages.add_message(request, messages.SUCCESS, "File uploaded successful")    

            # Redirect to the document list after POST
            return HttpResponseRedirect(reverse_lazy('STLup'))
    else:
        form = NewUpload()  # A empty, unbound form

有谁能帮我弄清楚如何将生成的信息保存到数据库中吗?在

编辑1

在模型.py在

^{pr2}$

这是我的表单.py. 在

from django import forms
from django.core.validators import MinLengthValidator

from .models import UploadedFiles


class NewUpload(forms.ModelForm):


    class Meta:
        model = UploadedFiles
        fields = ('Title', 'STL','Photo','Description', 'Category', 'SubCategory', 'SubSubCategory', 'LicenseTag')

Tags: namepyform信息dataifrequestfirstname
1条回答
网友
1楼 · 发布于 2024-09-29 21:37:20

在我看来,最好的方法是重写模型中的save方法。在

class UploadedFiles(models.Model):
    def save(self, *args, **kwargs):
        if not self.LicenseTag:
            if self.user:
                liscname = self.user.get_full_name() or self.user.email
                self.LicenseTag = "{0} {1}".format(liscname, self.Title)

        super(UploadFiles,self).save(*args,**kwargs)

然后同样的事情在你的管理工作,而不必做很多艰苦的工作。我已经自由地优化了许可证标签的派生方式。在

现在你的观点变得简单多了。在

^{pr2}$

相关问题 更多 >

    热门问题