Нажмите кнопку и сохраните текущее время и значения по умолчанию в базе данных (Django) - PullRequest
0 голосов
/ 13 февраля 2019

Когда в моем браузере нажата кнопка «Добавить», он автоматически сохраняет имя (Модуль 1), текущую дату и местоположение (Сектор 1) в базе данных.

Вот мои коды, так чтодалеко:

models.py

from django.db import models
from django.utils import timezone

class Alert(models.Model):
    module = models.ForeignKey(Module, on_delete = models.CASCADE, default='Module 1')
    date = models.DateTimeField(default = timezone.now)
    location = models.CharField(max_length=10, default='Sector 1')

    def __str__(self):
        return self.module

views.py

from django.shortcuts import render
from django.contrib import messages
from django.views.generic import ListView
from .models import Alert, Module
from .forms import AlertForm

def home(request):
    context = {
        'modules': Module.objects.all(),
        'alerts': Alert.objects.all(),
    }

    if request.method == 'POST':
        form = AlertForm(request.POST or None)
        if form.is_valid():
            form.save()
            messages.success(request, ('Item has been successfully added to the database!'))
            return render(request, 'home/home.html', context)
    return render(request, 'home/home.html', context)

def alert(request, module_id):
    try:
        mdl = Module.objects.get(id=module_id)
    except Module.DoesNotExist:
        mdl = None

    context = {
        'module': mdl,
        'alerts': Alert.objects.all()
    }
    return render(request, 'home/alert.html', context)

home.html

<div class="container">
    <form method="POST">{% csrf_token %} 
        <input type="submit" value="Add">
    </form>
</div>

Обновление: вот мой коддля urls.py

from django.urls import path
from . import views
from .views import AlertListView

urlpatterns = [
    path('', views.home, name='home'),
    path('alert/<int:module_id>/', views.alert, name='module'),
]

1 Ответ

0 голосов
/ 13 февраля 2019

Попробуйте:

Views.py

Обновлено, протестировано - работает

def home(request):
    if request.method == 'POST':
        form = AlertForm(request.POST or None)
        if form.is_valid():
            abc = form.save(commit=False)
            abc.save()
            messages.success(request, ('Item has been successfully added to the database!'))
            return redirect('home')
    return render(request, 'home/home.html', {'form':form})

html

<form method='post'>{% csrf_token %}

    {{ form.as_p }}

    <input type="submit" value="Submit">

</form>

Добавьте это в свой home.html

{% if messages %}
  <ul class="messages">
    {% for message in messages %}
      <li class="{{ message.tags }}">{{ message }}</li>
    {% endfor %}
  </ul>
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...