django - 如何在表单中设置初始值
问题描述
嘿伙计们,我如何在表单字段中设置初始值,假设用户在搜索表单中单击“BidForm”,我希望 BidForm 值将是其他表单中 ProjectName 的值...
这是我的搜索视图中的代码
def search_views(request):
project_list = ProjectNameInviToBid.objects.all()
query = request.GET.get('query')
if query:
project_list = project_list.filter(ProjectName__icontains=query)
context = {
'project_list': project_list
}
return render(request, 'content/search_views.html', context)
和我的其他观点
def project_name_details(request, sid):
majordetails = ProjectNameInviToBid.objects.get(id=sid)
if request.method == 'POST':
form = invitoBidForm(request.POST, request.FILES)
form.fields['ProjectName'].initial = majordetails
if form.is_valid():
form.save()
messages.success(request, 'File has been Uploaded')
else:
form = invitoBidForm()
args = {
'majordetails': majordetails,
'form': form
}
return render(request,'content/invitoBid/bacadmininvitoBid.html', args)
我的表格.py
class invitoBidForm(ModelForm):
class Meta:
model = InviToBid
fields = ('ProjectName','NameOfFile', 'Contract_No', 'Bid_Opening',
'Pre_Bid_Conference', 'Non_Refundable_Bidder_Fee',
'Delivery_Period',
'Pdf_fileinvi',)
和我的models.py
class ProjectNameInviToBid(models.Model):
ProjectName = models.CharField(max_length=255, verbose_name='Project Name', null=True)
DateCreated = models.DateField(auto_now=True)
def __str__(self):
return self.ProjectName
class InviToBid(models.Model):
today = date.today()
ProjectName = models.ForeignKey('ProjectNameInviToBid', on_delete=models.CASCADE)
NameOfFile = models.CharField(max_length=255, verbose_name='Name of File')
Contract_No = models.IntegerField(verbose_name='Contract No')
def __str__(self):
return self.NameOfFile
解决方案
首先,我要赞扬你的文件。大多数人未能提供重要的代码。
您可以在此处将类似的内容添加到您的代码中,这将满足您的要求。
我自己的代码中的一个例子
if request.method == 'GET' and request.user.is_authenticated:
study = Study.objects.get(pk=studyID)
form = ContactForm(initial={'from_email': request.user.email, 'subject': "Study: " + study.name ,'message': study_message.format(request.user.get_short_name(), request.user.get_full_name())})
你应该如何改变你的代码
other views
从此更改您的代码:
else:
form = invitoBidForm()
至
else:
form = invitoBidForm(initial={'ProjectName': <wherever your project name comes from>})
推荐阅读
- python - VSCode 我无法“开始调试”和“在没有调试的情况下运行”
- qt - Qt With Raspi:错误编译器为不同的 ABI 生成代码
- java - 将组件对齐到父组件的右侧
- mongodb - 我正在尝试使用 rs.initiate 方法将两个配置服务器部署为副本集,但是在部署时我的第二个配置服务器出现此错误
- python - cuda-cross-aarch64 是通过 conda、conda-forge 通道安装的 cudatoolkit 的一部分吗?
- node.js - 是否可以通过 Windows 服务器上的 Puppeteer 连接到 NordVPN?
- html - 使用网格模板区域的项目布局
- javascript - client.on() 不触发
- swift - Swift 中泛型声明中的数组
- excel - INDIRECT excel函数的使用