Моя форма не добавляет данные в базу данных — Django

#django

#django

Вопрос:

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

models.py:

 from django.db import models
from datetime import date

class Users(models.Model):
    login           = models.CharField(max_length=30)
    password        = models.CharField(max_length=30)
    mail            = models.CharField(max_length=40)
    create_date     = models.DateTimeField(default = date.today(), blank=True)
  

forms.py:

 from django import forms
from .models import Users

class Register(forms.ModelForm):
    password = forms.CharField(max_length=32, min_length = 8, widget=forms.PasswordInput)
    login = forms.CharField(min_length=4, max_length=30)
    mail = forms.EmailField()
    class Meta:
        model = Users
        fields = ['login','password','mail']
  

register.html:

 {% extends 'base.html' %}

{% block content %}
<div id="form-user">
    <form method="POST">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="SAVE" />
    </form>
</div>
{% endblock %}
  

views.py:

 from django.shortcuts import render
from .forms import Register
from .models import Users


def register(request):
    if request.method == "POST":
        form = Register(request.POST)
        if form.is_valid():
            form.save(commit = True)
            form = Register()
    form = Register()
    return render(request, "register.html", {'form': form})
  

Ответ №1:

Проблема заключается в вашем views.py .Вы можете попробовать:

 from django.shortcuts import render,redirect
from .forms import Register
from .models import Users


def register(request):
    if request.method == "POST":
        form = Register(request.POST)
        if form.is_valid():
            form.save(commit=False)
            form.save()
            return redirect('/') #redirect after saving
    form = Register()
    return render(request, "register.html", {'form': form})
  

Комментарии:

1. Хорошо, теперь, по крайней мере, я знаю, что происходит. Я не вижу никаких данных в БД с помощью панели администратора, но оболочка python показывает объекты Users.objects.all(). Итак, я предполагаю, что я что-то перепутал с настройками или моя база данных сохраняется где-то в другом месте.

2. Вы должны зарегистрировать свою модель пользователей в django admin.py вашего приложения, чтобы увидеть данные

3. Правильное решение, я забыл отредактировать admin.py . Спасибо.