【发布时间】:2016-09-01 15:18:07
【问题描述】:
我决定从我在 django 中设置的数据库的字段中删除一行。我已经在模型/表单中删除了它并完全重新运行了数据库(makemigrations,migrate)。但是,无论我做什么,我都会不断收到完整性错误(NOT NULL 约束失败:index_user.email)。我不确定我为什么会得到这个,因为该字段甚至不再存在,而且我在任何文件中都找不到它的任何痕迹。有谁知道如何解决这个错误?
型号:
from django.db import models
# Create your models here.
class user(models.Model):
username = models.CharField(max_length=20)
password = models.CharField(max_length=15)
def __str__(self):
return self.username + ' - ' + self.password
浏览量:
def login(request):
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data["username"]
password = form.cleaned_data["password"]
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect('loggedin.html')
else:
return HttpResponse("Account deleted or disabled")
else:
return HttpResponseRedirect('/invalid')
return render(request, "login_page.html", {'form': form})
表格:
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
def clean(self, *args, **kwargs):
username = self.cleaned_data.get("username")
password = self.cleaned_data.get("password")
if username and password:
user = authenticate(username=username, password=password)
if not user:
raise forms.ValidationError("User does not exist.")
if not user.is_active:
raise forms.ValidationError("User is no longer active.")
return super(UserLoginForm, self).clean(*args, **kwargs)
【问题讨论】:
-
如果您不向我们展示您的模型/表单是什么样子、您如何更改它们以及您的迁移是什么样子,几乎不可能知道出了什么问题。
-
您是否打算修改网站管理部分预先打包的用户?
-
我已经用模型/视图/表单更新了帖子。我遇到的问题是当我尝试通过管理功能将用户添加到数据库时,并不断收到完整性错误。
-
当我在开发而不是在生产中时,处理此类错误的最佳方法是hack。我删除数据库并重建它。
标签: python django null integrity