Как отправить данные в POST-запросе, когда данные не введены пользователем в Django - PullRequest
1 голос
/ 30 октября 2019

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

Это веб-сайт для анализа запасов. Я не знаю, как это сделать. PS- Я новичок в кодировании

Модель списка наблюдения:

class WatchList(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    watchlist = models.CharField(max_length=300, default='')
    price = models.IntegerField(default='')

html:

{% extends 'homepage/layout.html' %}
{% block content %}
{% load static %}
    <head>
        <title>Technical Analysis</title>
        <link rel="stylesheet" href="{% static 'tech_analysis/tech_analysis.css' %}">
    </head>

    <div class="line"></div>
    <div class="head">
        Technical Analysis
    </div>
    <div class="coname">
        <ul class="ticker_table">
            <li class="ticker_name">{{ ticker }}-</li>
            <li class="ticker_price">{{ price }}</li>
            <li class="diff_green">{{ diff_green }}</li>
            <li class="diff_red">{{ diff_red }}</li>
        </ul>
        <form action="{% url 'bsh_user:Userpage' %}" method="post">
            {% csrf_token %}
             <input class="watchlist" type="submit" value="Add To Watchlist +">
        </form>

    </div>

такая информация, как {{ticker}} и {{price}} - это данные, которые должны быть опубликованы в модели и отображены для пользователя в другом html.

Ожидаемый результат - добавить компанию и ее цену в модель для наблюдения одним щелчком мыши.

1 Ответ

1 голос
/ 30 октября 2019
  1. Вы можете установить обязательный = False в django.forms.Form
    class WatchListForm(forms.Form)
        user = forms.ModelChoiceField(queryset=User.objects.all(), widget=forms.HiddenInput())
        watchlist = models.CharField(widget=forms.TextInput({'class': 'watchlist'}))
        price = models.IntegerField(widget=forms.HiddenInput())
    <form action="{% url 'bsh_user:Userpage' %}" method="post">
        {% csrf_token %}
        {{ form.user }}
        {{ form.price }}
        {{ form.watchlist }}
    </form>

исходную форму с request.user и ценой и сохранить

илиВы можете установить значения в представлении после функции form.is_valid с именем

if form.is_valid():
    data = form.cleaned_data
    data.update({'user': request.user, 'price': some_price})

или обновить данные POST с помощью параметров

    request.POST.update({'user': request.user, 'price': some_price})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...