Привет, еще один 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'),
]```