首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何编辑Django下拉HTML表单中的数据?

如何编辑Django下拉HTML表单中的数据?
EN

Stack Overflow用户
提问于 2021-06-10 06:32:07
回答 2查看 1.3K关注 0票数 5

我有一个表单,我编辑单引线数据,我提交数据使用Django默认管理面板。但是现在我在我的默认表单上编辑数据。所以我关心的是,如果我编辑任何引线,那么应该在数据库中可用的下拉列表中选择默认值,如果我想更改下拉值,我可以从下拉列表中选择它。

这是我的Models.py文件

代码语言:javascript
复制
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文件

代码语言:javascript
复制
path(r'^leads/<int:id>/change',views.leads_edit, name="leads_edit"),

这是我的views.py文件..。

代码语言:javascript
复制
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文件,我正在尝试使用下拉字段进行编辑.

代码语言:javascript
复制
{% for obj in leads.SOURCE %}
    <option value="{{ leads.source }}">{{ obj}}</option>
{% endfor %}

请检查我的代码,并告诉我如何从数据库中显示选定的字段,以及如何在下拉列表中显示其他字段。因为我可以改变下拉字段。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-10 06:48:21

请试试这个,我希望它能帮到你.

代码语言:javascript
复制
{% for id, obj in leads.SOURCE %}
     <option value="{{ id }}"{% if leads.source == id %} selected="selected"{% endif %}>{{ obj }}</option>
{% endfor %}
票数 3
EN

Stack Overflow用户

发布于 2021-06-10 07:39:02

我不确定,但很确定你是不是在找这样的东西。

代码语言:javascript
复制
SOURCE = (
    ('', '--------'),
    ('Facebook', 'Facebook'),
    ('Website', 'Website'),
    ('PPC', 'PPC'),
    ('Reference', 'Reference'),
    ('Other Source', 'Other Source')
)
代码语言:javascript
复制
source = models.CharField(choices=SOURCE, default='Website', max_length=100)

如果你不还清债务

代码语言:javascript
复制
source = models.CharField(choices=SOURCE, default='', max_length=100)

在写默认值= 2的地方,我认为这是行不通的,因为选择列表中的值是一个字符串。如果您这样写它们,那么您可能会默认为一个数字值,即使它仍然是一个charfield。如果您想要走这条路线,您也可以转换到其他PositiveInteger字段。第二个参数只是您选择的一个标签。

代码语言:javascript
复制
SOURCE = (
    (0, '--------'),
    (1, 'Facebook'),
    (2, 'Website'),
    (3, 'PPC'),
    (4, 'Reference'),
    (5, 'Other Source')
)

而且,无论您的表单实际位于何处,除了上面的内容之外,您可能还应该在该文件中执行类似的操作。根据需要,选择一个或另一个。

代码语言:javascript
复制
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)

代码语言:javascript
复制
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 }}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67915888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档