如何保存用户输入(Django)

时间:2019-07-01 16:19:14

标签: python html django

我有一个下拉菜单,该菜单通过两个不同的对象值contact.firstNamecontact.lastName的组合来填充。如何在POST上分别提交这两个值,以便以后查询?之所以出现此问题,是因为我需要处理名字或姓氏多于一个单词的情况。

views.py

if form.is_valid():
    obj.contact = request.POST.get('select_contacts')

template.html

<div class="select">
    <select name="select_contacts" id="select_contacts" required>
        <option value="">Contact</option>
        % for contact in contacts %}
        <option value="{{ contact.firstName }} {{ contact.lastName }}" name="selected_contact" id="selected_contact">{{ contact.firstName }}  {{ contact.lastName }}</option>
        {% endfor %}
    </select>
</div>

1 个答案:

答案 0 :(得分:1)

为防止使用串联的char字段引用对象时出现问题,您应该改用联系人ID来引用联系人对象:

<option value="{{ contact.id }}" name="selected_contact" id="selected_contact">{{ contact.firstName }}  {{ contact.lastName }}</option>

然后在相关模型上设置contact_id,以使其正确引用联系人对象:

if form.is_valid():
    obj.contact_id = request.POST.get('selected_contact')

这假设obj.contact是名为Contact的模型的外键,例如:

class Whatever(models.Model):
    contact = ForeignKey(Contact, on_delete=models.CASCADE)

这种关系将确保您始终保持引用完整性,并避免遇到您遇到的问题以及其他问题,例如当两个联系人具有相同的姓名时。