asdfasd

parent 7d4e2da2
# Generated by Django 3.2.4 on 2021-06-24 14:01
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('article', '0002_auto_20210623_1935'),
]
operations = [
migrations.CreateModel(
name='Author',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100, verbose_name='Имя')),
('last_name', models.CharField(max_length=100, verbose_name='Название')),
],
),
migrations.AlterField(
model_name='article',
name='author',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='article.author', verbose_name='Автор'),
),
]
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100, null=False, blank=False, verbose_name='Имя')
last_name = models.CharField(max_length=100, null=False, blank=False, verbose_name='Название')
def __str__(self):
return f"{self.name} {self.last_name}"
class Article(models.Model):
title = models.CharField(max_length=100, null=False, blank=False, verbose_name='Название')
content = models.TextField(max_length=3000, null=False, blank=False, verbose_name='Тело')
author = models.CharField(max_length=100, null=False, blank=False, verbose_name='Автор')
author = models.ForeignKey(to=Author, on_delete=models.CASCADE, verbose_name='Автор')
created_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата и время создания")
updated_at = models.DateTimeField(auto_now=True, verbose_name="Дата и время изменения")
publication_date = models.DateTimeField(verbose_name="Дата и время публикации", null=True, blank=False)
......@@ -13,6 +20,5 @@ class Article(models.Model):
return f"{self.pk}. {self.title}"
class Meta:
verbose_name='Статья'
verbose_name_plural='Статьи'
verbose_name = 'Статья'
verbose_name_plural = 'Статьи'
from django.urls import path
from article.views import article_create_view, article_list_view, article_detail_view, article_update_view
from article.views import \
article_create_view, \
article_list_view, \
article_detail_view, \
article_update_view, \
author_list_view, \
author_create_view
urlpatterns = [
......@@ -7,4 +13,7 @@ urlpatterns = [
path('list/', article_list_view, name='article_list'),
path('detail/<int:pk>', article_detail_view, name='article_detail'),
path('edit/<int:pk>', article_update_view, name='article_update'),
path('author/create', author_create_view, name="add_author"),
path('author/list', author_list_view, name="list_author")
]
\ No newline at end of file
from django.shortcuts import render
from article.models import Article
from article.models import Article, Author
from django.shortcuts import redirect
from django.http import HttpResponseNotFound
from datetime import datetime
......@@ -11,17 +11,20 @@ def index_view(request):
def article_create_view(request):
if request.method == 'GET':
return render(request, 'article/create.html')
return render(request, 'article/create.html', context={
'authors': Author.objects.all()
})
elif request.method == 'POST':
publication_date = datetime.strptime(request.POST.get("publication_date"), "%Y-%m-%dT%H:%M")
now_time = datetime.now()
if publication_date < datetime.now():
return render(request, 'article/create.html', context={
"error_message": f"Дата публикации ({publication_date}) не должна быть раньше текущей {now_time}"})
author = Author.objects.get(id=request.POST.get('author_id'))
new_article = Article.objects.create(
title=request.POST.get('title'),
content=request.POST.get('content'),
author=request.POST.get('author'),
author=author,
publication_date=publication_date
)
new_article.save()
......@@ -63,3 +66,21 @@ def article_list_view(request):
return render(request, 'article/list.html', context={
'articles': Article.objects.all()
})
def author_create_view(request):
if request.method == "GET":
return render(request, 'author/create.html')
if request.method == "POST":
new_author = Author.objects.create(
last_name=request.POST.get("last_name"),
name=request.POST.get("name"),
)
new_author.save()
return redirect("list_author")
def author_list_view(request):
return render(request, "author/list.html", context={"authors": Author.objects.all()})
......@@ -20,7 +20,11 @@
</div>
<div class="mb-3">
<label for="author_input" class="form-label">Author</label>
<input type="text" name="author" class="form-control" id="author_input" placeholder="Автор...">
<select name="author_id" id="author_input">
{% for author in authors %}
<option value="{{ author.id }}">{{ author }}</option>
{% endfor %}
</select>
</div>
<div class="mb-3">
<label for="publication_date_input" class="form-label">Дата публикации</label>
......
{% extends 'base.html' %}
{% block content %}
<div class="row">
<div class="col-md-6">
{% if error_message %}
<div class="alert alert-danger" role="alert">
{{ error_message }}
</div>
{% endif %}
<form action="{% url 'add_author' %}" method="post">
{% csrf_token %}
<div class="mb-3">
<label for="name_input" class="form-label">Имя</label>
<input type="text" name="name" class="form-control" id="name_input" placeholder="Имя...">
</div>
<div class="mb-3">
<label for="last_name_input" class="form-label">Фамилия</label>
<input type="text" name="last_name" class="form-control" id="last_name_input" placeholder="Фамили...">
</div>
<button type="submit" class="btn btn-success">Create</button>
</form>
</div>
</div>
{% endblock %}
\ No newline at end of file
{% extends 'base.html' %}
{% block content %}
<div class="row">
<div class="col-md-6">
<div class="list-group">
{% for author in authors %}
<div>
{{ author }}
</div>
{% endfor %}
</div>
</div>
</div>
<a href="{% url 'add_author' %}" class="btn btn-info">Add New Author</a>
{% endblock %}
......@@ -25,6 +25,9 @@
<li class="nav-item">
<a class="nav-link" href="{% url 'add_article' %}">Add New Article</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'add_author' %}">Add New Author</a>
</li>
</ul>
</div>
</div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment