Python Django ForeignKey返回的是ID号而不是实际的字符串值,特别是对于基于表单的request.POST
我有一个网站联系人表单,它会生成一个下拉框,其中包含在另一个模型“数据”中定义的“姓名”。联系人表单以“报价”模式运行。因此,我使用ForeignKey引用来填充“Quote”驱动表单中的“数据”信息 但是,下一步是将这些数据移动到更多的python代码中(例如,用于计算和放置在电子邮件中)。但是,当我在quote views文件中request.POST“name”时,我会收到一个ID(即1),而不是“name”的实际字符串值。我已经了解到这就是ForeignKey固有地传输数据的方式 就像我如何在quote下拉框中返回“name”的实际字符串版本一样,我如何在数据请求中获得“name”的实际字符串版本。POST/data\u dictionary赋值?我见过类似的问题,但我不完全确定最简单的答案 models.py(原装) models.py(与表单绑定的一个) 视图.pyPython Django ForeignKey返回的是ID号而不是实际的字符串值,特别是对于基于表单的request.POST,python,django,forms,foreign-keys,Python,Django,Forms,Foreign Keys,我有一个网站联系人表单,它会生成一个下拉框,其中包含在另一个模型“数据”中定义的“姓名”。联系人表单以“报价”模式运行。因此,我使用ForeignKey引用来填充“Quote”驱动表单中的“数据”信息 但是,下一步是将这些数据移动到更多的python代码中(例如,用于计算和放置在电子邮件中)。但是,当我在quote views文件中request.POST“name”时,我会收到一个ID(即1),而不是“name”的实际字符串值。我已经了解到这就是ForeignKey固有地传输数据的方式 就像我
def quote_req(request):
submitted = False
if request.method == 'POST':
form = QuoteForm(request.POST, request.FILES)
name = request.POST['name']
if form.is_valid():
data_dict = {
'name_': str(name),
inputdictionary = data_dict
class QuoteForm(ModelForm):
helper = FormHelper()
helper.form_show_labels = False
required_css_class = 'required'
class Meta:
model = Quote
fields = ['name',]
def quote_req(request):
submitted = False
if request.method == 'POST':
form = QuoteForm(request.POST, request.FILES)
name = request.POST['name']
if form.is_valid():
name = form.cleaned_data['name']
data_dict = {
'name_': str(name),
inputdictionary = data_dict
forms.py
def quote_req(request):
submitted = False
if request.method == 'POST':
form = QuoteForm(request.POST, request.FILES)
name = request.POST['name']
if form.is_valid():
data_dict = {
'name_': str(name),
inputdictionary = data_dict
class QuoteForm(ModelForm):
helper = FormHelper()
helper.form_show_labels = False
required_css_class = 'required'
class Meta:
model = Quote
fields = ['name',]
def quote_req(request):
submitted = False
if request.method == 'POST':
form = QuoteForm(request.POST, request.FILES)
name = request.POST['name']
if form.is_valid():
name = form.cleaned_data['name']
data_dict = {
'name_': str(name),
inputdictionary = data_dict
变量赋值
▼ Local vars
Variable Value
name '1'
各自的错误(我需要“name”的实际字符串值)
该解决方案与@dirkgroten在评论中提到的方案是一致的。我必须在if form.is_valid语句之后添加form.cleaned_data方法。不需要修改其他文件 视图.py
def quote_req(request):
submitted = False
if request.method == 'POST':
form = QuoteForm(request.POST, request.FILES)
name = request.POST['name']
if form.is_valid():
data_dict = {
'name_': str(name),
inputdictionary = data_dict
class QuoteForm(ModelForm):
helper = FormHelper()
helper.form_show_labels = False
required_css_class = 'required'
class Meta:
model = Quote
fields = ['name',]
def quote_req(request):
submitted = False
if request.method == 'POST':
form = QuoteForm(request.POST, request.FILES)
name = request.POST['name']
if form.is_valid():
name = form.cleaned_data['name']
data_dict = {
'name_': str(name),
inputdictionary = data_dict
你为什么要这么做?您的表单是一个
ModelForm
来创建/修改Quote
实例,因此在实例化和验证它之后,form.cleaned_data['name']
将是所选的实际data
实例和form.cleaned_data['name'].name
将是该实例的name
字段。@dirkgroten我希望保留变量“name”的实际字符串值,而不是ID,当我稍后在Python代码中引用它时,该代码使用模型数据作为主数据库的模板。但我刚刚告诉您如何从提交的表单中获取name
string。@dirkgroten表示歉意,但我误解了我应用表单的位置。在我的代码中正确地清除了数据['name']。在您看来,在if form