我有一个表单,我编辑单引线数据,我提交数据使用Django默认管理面板。但是现在我在我的默认表单上编辑数据。所以我关心的是,如果我编辑任何引线,那么应该在数据库中可用的下拉列表中选择默认值,如果我想更改下拉值,我可以从下拉列表中选择它。
这是我的Models.py文件
class Leads(models.Model):
SOURCE = (
('Facebook', 'Facebook'),
('Website', 'Website'),
('PPC', 'PPC'),
('Reference', 'Reference'),
('Other Source', 'Other Source')
)
name = models.CharField(max_length=50, default=None)
email = models.EmailField(max_length=50, null=True, blank=True)
phone = models.CharField(max_length=10, default=None)
source = models.CharField(choices=SOURCE, default=2, max_length=100)这是我的urls.py文件
path(r'^leads/<int:id>/change',views.leads_edit, name="leads_edit"),这是我的views.py文件..。
def leads_edit(request, id):
leads = Leads.objects.get(id=id)
context = {'leads':leads}
template_name = 'file/edit.html'
return render(request, template_name, context)这是我的edit.html文件,我正在尝试使用下拉字段进行编辑.
{% for obj in leads.SOURCE %}
<option value="{{ leads.source }}">{{ obj}}</option>
{% endfor %}请检查我的代码,并告诉我如何从数据库中显示选定的字段,以及如何在下拉列表中显示其他字段。因为我可以改变下拉字段。
发布于 2021-06-10 06:48:21
请试试这个,我希望它能帮到你.
{% for id, obj in leads.SOURCE %}
<option value="{{ id }}"{% if leads.source == id %} selected="selected"{% endif %}>{{ obj }}</option>
{% endfor %}发布于 2021-06-10 07:39:02
我不确定,但很确定你是不是在找这样的东西。
SOURCE = (
('', '--------'),
('Facebook', 'Facebook'),
('Website', 'Website'),
('PPC', 'PPC'),
('Reference', 'Reference'),
('Other Source', 'Other Source')
)source = models.CharField(choices=SOURCE, default='Website', max_length=100)如果你不还清债务
source = models.CharField(choices=SOURCE, default='', max_length=100)在写默认值= 2的地方,我认为这是行不通的,因为选择列表中的值是一个字符串。如果您这样写它们,那么您可能会默认为一个数字值,即使它仍然是一个charfield。如果您想要走这条路线,您也可以转换到其他PositiveInteger字段。第二个参数只是您选择的一个标签。
SOURCE = (
(0, '--------'),
(1, 'Facebook'),
(2, 'Website'),
(3, 'PPC'),
(4, 'Reference'),
(5, 'Other Source')
)而且,无论您的表单实际位于何处,除了上面的内容之外,您可能还应该在该文件中执行类似的操作。根据需要,选择一个或另一个。
source = forms.CharField(
widget = forms.Select(
choices = SOURCE
),
required = True/False,
max_length = 100,
)然后,在表单类中,您可以尝试将___init__上的字段值设置为您需要执行的任何参数和检查。当您使用类时,您必须将请求传递到表单类中,或者只编写这个类*def __init__(self,*args,**_kwargs):相反,这取决于您是否需要请求来找到解决方案,看起来您可能会这样做。传入请求将类似于以下表单=LeadsForm(请求)或表单= LeadsForm(request.POST),如果需要id窗体=LeadsForm(请求,some_id)
class LeadsForm(forms.Form):
source = forms.CharField(
widget = forms.Select(
choices = SOURCE
),
required = True/False,
max_length = 100,
)
def __init__(self, request, some_id, *args, **kwargs):
super(LeadsForm, self).__init__(*args, **kwargs)
{{ your_lead_magic_here... }}
self.fields['source'].initial = {{ your_calculated_lead_value_here }}https://stackoverflow.com/questions/67915888
复制相似问题