我试图允许用户手动输入一个文本字段,如果他们有许可证信息,或者让它自动生成(基于表单信息)如果其原始内容。在
如果我的测试信息被正确地保留在“许可证”窗体中,因为“打印”命令在“打印”窗体中被保留为空。问题是更新的信息没有保存在数据库中。经过研究,这似乎是一个不变性的问题,这就是为什么我添加了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')
在我看来,最好的方法是重写模型中的save方法。在
然后同样的事情在你的管理工作,而不必做很多艰苦的工作。我已经自由地优化了许可证标签的派生方式。在
现在你的观点变得简单多了。在
^{pr2}$相关问题 更多 >
编程相关推荐