Получить значение из раскрывающегося списка и использовать его для метода публикации в представлении - PullRequest
0 голосов
/ 20 июня 2020

Привет, еще один Django newb ie здесь,

Итак, я пытаюсь создать простое веб-приложение Quote.

Итак, у меня есть 2 модели: 1 для Автор и еще 1 для цитат. Таким образом, существует отношение «многие к одному»:

Модель автора:

```class AuthorInfo(models.Model):
    author_firstName = models.CharField(max_length=100)
    author_lastName = models.CharField(max_length=100)

    def __str__(self):
        return self.author_firstName```

Модель цитаты:

```class Quote(models.Model):
    author = models.ForeignKey(AuthorInfo, on_delete=models.CASCADE)
    quote_text = models.CharField(max_length=255)

    def __str__(self):
        return self.author.author_firstName```

Я пытаюсь сделать прямо сейчас, У меня есть форма, и внутри нее есть раскрывающийся список, заполненный именами авторов.

Форма внутри дома. html:

```<form method="POST" action="/addQuote/">
  {% csrf_token %}
  <div class="container mt-3 d-flex justify-content-center">
    <div class="card w-100">
      <div class="card-header navbar-dark bg-primary">
        <h1 style="color: white;">Add quote</h1>
      </div>
      <div class="card-body">
        Quote text
        <div class="input-group input-group-sm mb-1">
          <div class="input-group-prepend">
            <span
              class="input-group-text bg-primary"
              style="color: white;"
              id="inputGroup-sizing-sm"
              >Enter Quote</span
            >
          </div>
          <input
            name="quote_text"
            type="text"
            class="form-control"
            aria-label="Sizing example input"
            aria-describedby="inputGroup-sizing-sm"
          />
        </div>
        <br />
        <div class="mb-3">
          <div class="">
            Select author
            <select name="dropdown_author">
              {% for author in authors %}
              <option value="{{author.author_firstName}}"
                >{{author.author_firstName}}</option
              >

              {% endfor %}
            </select>
          </div>
        </div>
        <button
          type="submit"
          class="btn btn-primary align-items-center d-flex justify-content-center"
        >
          Submit quote
        </button>
      </div>
    </div>
  </div>
</form>```

Я хочу сделать автор может ввести цитату в поле ввода и тем самым позволить автору выбрать свое имя из флажка и отправить его в базу данных.

View.py:

```from __future__ import unicode_literals
from .models import AuthorInfo, Quote
from django.shortcuts import render


def home(request):
    # Ophalen van alle authors die zijn aangemaakt (Fetchen van data)
    all_authors = AuthorInfo.objects.all()
    # Kan aangeroepen worden in de template bv. {{% for author in authors %}}
    return render(request, 'QuotesApplication/home.html', {'authors': all_authors})


def about(request):
    return render(request, 'QuotesApplication/about.html', {'title': 'About'})


def formUser(request):
    return render(request, 'QuotesApplication/form.html')


def addUser(request):
    print("Form is submitted")
    author_firstName = request.POST["author_firstName"]
    author_lastName = request.POST["author_lastName"]

    # local variable assignen met tabel velden
    author_info = AuthorInfo(
        author_firstName=author_firstName, author_lastName=author_lastName)
    author_info.save()  # Alle data saven naar de database
    # Deze lijn en de volgende lijn redirecten na het submitten terug naar de home.html page
    all_authors = AuthorInfo.objects.all()
    return render(request, 'QuotesApplication/home.html', {'authors': all_authors})


def addQuote(request):
    dropdownName = request.POST.get('dropdown_author', None)
    # authorName2 = AuthorInfo.objects.get(author_firstName = 'Azdine').id
    author = request.POST[dropdownName]
    quoteText = request.POST['quote_text']
    print(author, "Quote is submitted")
    quotes = Quote(author=author, quote_text=quoteText)
    quotes.save()
    all_quotes = Quote.objects.all()
    return render(request, 'QuotesApplication/home.html', {'quotes': all_quotes})```

urls.py:

```from django.conf.urls import url, include
from . import views

urlpatterns = [
    url(r'^$', views.home, name='quotes-home'),
    url(r'^about/$', views.about, name='quotes-about'),
    url(r'^create/$', views.formUser, name='quotes-create'),
    url(r'^addUser/$', views.addUser, name='addUser'),
    url(r'^addQuote/$', views.addQuote, name='addQuote'),
]```

1 Ответ

0 голосов
/ 20 июня 2020

Я действительно не понимаю, что вы пытаетесь сделать, но я бы предпочел, чтобы вы добавили пользователя ur self, как только автор отправит свое сообщение, потому что, если автор выберет другое, это будет выглядеть неловко

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