簡體   English   中英

如何根據用戶選擇Django將表單中的輸入設置為默認值

[英]How to set an input in a form to have a default based on the users selection Django

我正在使用Django創建一個應用程序。 我有一個對象列表,用戶可以選擇一個對象並轉到包含該對象詳細信息的頁面,然后他們可以更改這些詳細信息。 但是,目前,用於更改詳細信息的表格要求用戶在更改詳細信息之前輸入對象的名稱。 我希望它已經輸入了一個默認值,該默認值應該是用戶在上一頁中選擇並查看的默認值,即用戶選擇“ object1”,然后轉到表格中更改“ object1”的信息,然后表單頂部有一個標簽,上面寫着“ Object name”(對象名稱),輸入框中有“ object1”,用戶無需對其進行任何操作。 這是我的一些代碼,希望這一切有意義。 有沒有人對我該如何做有任何建議? 我想我可以使用RESTful API URL,因此該URL可能類似於/details/2/change_date那么它可能可以訪問ID 2的名稱?

Urls.py

urlpatterns = [
    url(r'^details/$', Info.as_view(), name="server_details"),
    url(r'^details/([0-9]+)/$', GetDetails.as_view(), name="details"),
    url(r'^change_date/$', ChangeDateFormView.as_view(), name="change_date"),
]

Views.py

class ChangeDateFormView(FormView):

def get_form_class(self):
    return ChangeDateForm

def get_template_names(self):
    return 'change_date.html'

# Renders a form on GET and processes it on POST.
def get(self, request, *args, **kwargs):
    form_class = self.get_form_class()
    form = self.get_form(form_class)
    return self.render_to_response(self.get_context_data(form=form))

def post(self, request, *args, **kwargs):
    form_class = self.get_form_class()
    form = self.get_form(form_class)
    if form.is_valid():
        form_data = form.cleaned_data
        name = form.data['name']
        new_date = form_data['new_date']
        confirm_new_date = form_data['confirm_new_date']

        if new_date != confirm_new_date:
            form._errors["new_date"] = "Dates do not match"
            return self.form_invalid(form)

        elif MyObjects.objects.filter(name=name).exists():
            MyObjects.objects.filter(name=name).update(date=new_date)
            return render(request, 'change_data_success.html', {})

        else:
            form.errors['name'] = "doesn't exists"
            return self.form_invalid(form)
    else:
        return self.form_invalid(form)

模板

<form action="{% url "change_date" %}" method="post">
     {% csrf_token %}
     <div class="form-group cf">
        <label for="name" class="col-sm-4 control-label">name:</label>
        <div class="col-sm-8">
            {% render_field form.name type="name" class+="form-control" placeholder="name" %}
            <span style="color: #FF0000">{{ form.name.errors }}</span>
        </div>
    </div>
    <div class="form-group cf">
        <label for="date" class="col-sm-4 control-label">New date:</label>
        <div class="col-sm-8">
            {% render_field form.new_date type="date" class+="form-control" %}
            <span style="color: #FF0000">{{ form.new_date.errors }}</span>
        </div>
    </div>
    <div class="form-group cf">
        <label for="confirm date" class="col-sm-4 control-label">Confirm date:</label>
        <div class="col-sm-8">
            {% render_field form.confirm_new_date type="date" class+="form-control" %}
            <span style="color: #FF0000">{{ form.confirm_new_date.errors }}</span>
        </div>
    </div>
    <div style="text-align: center">
        <button type="submit" class="btn btn-default">Submit</button>
    </div>
</form>

我設法使用RESTful URL。 https://realpython.com/blog/python/django-rest-framework-quick-start/

然后,我的change_details頁面可以使用詳細信息頁面使用的ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM