Невозможно сохранить данные в модели django

ниже приведены полные данные кода Я перепробовал все, а также применил методы, доступные в интернете, но проблема все еще продолжается. Я не получал никаких ошибок при отправке формы.

Модель:

class Subscriber(models.Model):
    id = models.BigAutoField(primary_key=True)
    email = models.EmailField(null=False, default=1)
    date = models.DateTimeField(auto_now_add=True)

Вид:

from .models import Subscriber

def subscriber_view(request):
    if request.method == 'POST':
        email = request.POST.get('email')
        subscriber = Subscriber(email=email)
        subscriber.save()
    return render(request, 'homepage')

urls.py

path('', views.subscriber_view, name='subscriber'),

base.html

{% load static %}

<div class="footer-newsletter">
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-lg-6">
                <h4>Join Our Newsletter</h4>
                <p>Tamen quem nulla quae legam multos aute sint culpa legam noster magna</p>
                <form method="POST" action="{% url 'subscriber' %}" id="subscriber" role="form" novalidate="novalidate" >
                    {% csrf_token %}

                    <input class="form-control" id="email" placeholder="Email Address" type="email" name="email">
                    <input type="submit" value="Subscribe">
                </form>
            </div>
        </div>
    </div>
</div>

из документа Django https://docs.djangoproject.com/en/dev/ref/models/querysets/#create:

create(**kwargs)

Удобный метод для создания объекта и его сохранения за один шаг. Таким образом:

p = Person.objects.create(first_name="Bruce", last_name="Springsteen")

и:

p = Person(first_name="Bruce", last_name="Springsteen")
p.save(force_insert=True)

эквивалентны.

Параметр force_insert документирован в другом месте, но все, что он означает. что новый объект всегда будет создан. Обычно вам не нужно беспокоиться об этом. Однако, если ваша модель содержит ручной первичный значение первичного ключа, которое вы задали, и если это значение уже существует в базе данных, вызов create() завершится ошибкой IntegrityError, поскольку первичные ключи должны быть уникальными. Будьте готовы обработать исключение, если вы используете ручные первичные ключи.

В вашей модели Subscriber вручную установить первичный ключ следующим образом:

class Subscriber(models.Model):
    id = models.BigAutoField(primary_key=True)

Для добавления нового абонента необходимо использовать create() или save(force_insert=True)

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

Вернуться на верх