Как сохранить пользовательский ввод (Django) - PullRequest
0 голосов
/ 01 июля 2019

У меня есть выпадающее меню, которое заполняется комбинацией двух разных значений объекта contact.firstName и contact.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 Ответ

1 голос
/ 01 июля 2019

Чтобы избежать проблем со ссылками на объекты с помощью объединенных полей символов, вместо этого следует использовать идентификатор контакта для ссылки на объект контакта:

<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 является ForeignKey модели с именем Contact, например:

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

Это отношение гарантирует, что вы всегда сохраняете ссылочныйцелостность и предотвратит проблемы, подобные той, с которой вы столкнулись, а также другие проблемы, например, когда два контакта имеют одинаковое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...