Как добавить запись в базу данных Django через форму имея конкретные переменные и 1 инпут?

хочу реализовать добавление записи в базу данных через форму, есть 4 поля в бд, req_id, message, user_status, date, мне надо сделать так чтоб в форме был инпут с добавлением message, а остальные данные заносились без инпутов.

{% block content %}{% for el in tasks %}
<div class="list-group w-auto">
    <a href="#" class="list-group-item list-group-item-action d-flex gap-3 py-3" aria-current="true">
        {% if el.req_status == "confirm" %}
        <span width="32" height="32" class="rounded-circle flex-shrink-0">✅</span>
        {% elif el.req_status == "answered" %}
        <span width="32" height="32" class="rounded-circle flex-shrink-0">⏳</span>
        {% else %}
        <span width="32" height="32" class="rounded-circle flex-shrink-0">❌</span>
        {% endif %}
        <div class="d-flex gap-2 w-100 justify-content-between">
            <div>
                <h6 class="mb-0">{{ el.user_id }}</h6>
                <p class="mb-0 opacity-75">{{ el.inn }}</p>
            </div>
            <small class="opacity-50 text-nowrap">{{ el.req_id }}</small>
        </div>
    </a>
</div>
{% for re in messages %}
{% if re.req_id|stringformat:"s" == el.req_id|stringformat:"s" %}
<div class="chat_section">
    <p class="mb-0 opacity-75">{{re.message}}</p>
</div>
{% endif %}
{% endfor %}
<form method="post">
    {% csrf_token %}
    {{ form.message }}
    {% form.req_id %}: {{re.req_id}} -ВОТ ЗДЕСЬ НЕ ПОНИМАЮ КАК ПРАВИЛЬНО ПРИСВОИТЬ, И МОЖНО ЛИ ВООБЩЕ()
    {% form.user_status %}:{{re.user_status}}
    <button type="submit" class="btn btn-success">Отправить</button>
</form>
{% endfor %}

{% endblock %}

Сразу убирайте из формы все кроме одного поля, которое будете вводить. Оставляйте один инпут

в самой вьюшке

def requests(request):
    if request.method == "POST":
        form = MessageForm(request.POST)
        message_from_template = form.cleaned_data['message']
        user_status = request.user.status
        message = Message(message=message_from_template, user_status=user_status)
        message.save()

    form = MessageForm()
    messages = Messages.objects.all().order_by("req_id")
    tasks = Requests.objects.all().order_by("req_id")
    context = {"title": "Запросы", "tasks": tasks, "messages": messages, "form": form}
    return render(request, "main/requests.html", context)

Написал более понятно вам, создается сущность класса Message() и в нее добавляется запись. Почему пропущены req_id и date? Эти данные должны быть определены в самой модели. Я это вижу так

class Message(models.Model):
    req_id = models.AutoField(primary_key=True)
    date = models.DateTimeField(auto_now_add=True)
    # остальные поля

Документация по автоматическому добавлению даты здесь.

По сути у вас получится, что из темплейта приходит только одно - это сообщение. Все остальное может обрабатываться бекэндом без дополнительных действий

Вернуться на верх