Django 电子邮件已保存到“谁知道在哪里”且未找到任何关系
我在Django应用程序上注册时遇到了麻烦,但我最终用两个表单成功发布了它,这两个表单要求输入用户名、密码、密码确认、城市和电子邮件地址。当我转到Django管理页面时,我可以看到已经创建了自定义用户,但是缺少电子邮件字段。我已经运行了几次syncdb,所以我认为已经解决了,那么问题是什么呢 以下是forms.py的扩展表单:Django 电子邮件已保存到“谁知道在哪里”且未找到任何关系,django,postgresql,Django,Postgresql,我在Django应用程序上注册时遇到了麻烦,但我最终用两个表单成功发布了它,这两个表单要求输入用户名、密码、密码确认、城市和电子邮件地址。当我转到Django管理页面时,我可以看到已经创建了自定义用户,但是缺少电子邮件字段。我已经运行了几次syncdb,所以我认为已经解决了,那么问题是什么呢 以下是forms.py的扩展表单: class UserWaitlistForm(forms.Form): user_city = forms.CharField(max_length=25, re
class UserWaitlistForm(forms.Form):
user_city = forms.CharField(max_length=25, required=True)
user_email = forms.EmailField(max_length=35)
fields = ('user_city,' 'user_email')
以下是views.py中的注册视图:
@atomic
def register(request):
user_form = UserCreationForm()
user_waitlist_form = UserWaitlistForm()
if request.method == 'POST':
user_form = UserCreationForm(request.POST)
user_waitlist_form = UserWaitlistForm(request.POST)
if user_form.is_valid() and user_waitlist_form.is_valid():
new_user = user_form.save()
Foodie.objects.create(user_wechat=new_user, user_email=user_waitlist_form['user_email'].value(), user_city=user_waitlist_form['user_city'].value())
return redirect(reverse('home'))
return render(request, "registration/register.html", {
'user_form': user_form,
'user_waitlist_form': user_waitlist_form,
})
以下是models.py中的扩展用户模型:
class Foodie(models.Model):
user_wechat = models.OneToOneField(User)
user_city = models.CharField(max_length=25)
user_waitlist_status = models.BooleanField(default=False)
user_waitlist_num = models.IntegerField(blank=True, default=0)
user_num_referrals = models.IntegerField(blank=True, default=0)
user_email = models.EmailField()
USERNAME_FIELD = 'user_wechat'
def __unicode__(self):
return self.user_wechat.username
这是我的register.html:
{% extends "base.html" %}
{% load staticfiles %}
{% block title %}Create an account{% endblock %}
{% block content %}
<div data-role="page" id="register" data-theme="a">
<div data-role="header" data-position="fixed" style="background-color:#EEEEEE;" data-tap-toggle="false" data-add-back-btn="true">
<h1>Register</h1>
</div><!-- /header -->
<h1>Create an account</h1>
<form action="" method="post">
{{ user_form.as_p }}
{{ user_waitlist_form.as_p }}
<input type="submit" value="Create an account"/>
{% csrf_token %}
</form>
{% endblock %}
我的数据库好像有问题。显然存在一个数据库,但如何访问它并删除chishenma_app_category表?这会解决缺少电子邮件地址的问题吗?关于您使用的
psql
,命令\dt db_chishenma
将查找一个名为db_chishenma的表,这就是为什么出现未找到任何关系的错误
您可以通过将db指定为最后一个参数,直接从cmdline连接到db,即
psql -h <host> -U <user> -p <port> <dbname>
只有在未启用自动提交
的情况下,提交才是必需的
编辑并回复OP的评论:
重新同步后,电子邮件字段是否实际添加到Postgres
中的表中
此外,在执行同步时,您可能希望尝试增加详细程度
,以查看是否会产生任何额外信息。这是通过选项--verbosity 2
完成的。你可以把它增加到3,以获得更多信息
听起来好像南部
可能与DB不同步。根据增加的详细内容,可能建议按照您链接的票证中关于南部
迁移文件和历史的其他步骤进行操作。根据Ken的建议,我使用“psql-h localhost-U michelleglauser db_chishenma”进入psql shell,然后\dt查看我的表
我使用“从chishenma_app_Foodie中选择*”,查看了Foodie模型(我的扩展用户模型),发现用户电子邮件实际上包含在那里,尽管它不在管理GUI中。我还比较了auth_user表(使用“SELECT*FROM auth_user;”)和管理GUI,发现两者都有空的电子邮件字段,因此似乎只有Foodie模型处于关闭状态。在深入研究之后,我意识到我所要做的(!)就是在admin.py中添加“user\u email”以列出显示的内容,这样已经成功保存的电子邮件地址就会显示在Foodie的管理GUI中。整行现在与psql表完全对齐,如下所示:
list_display = ('user_wechat', 'user_city', 'user_waitlist_status', 'user_waitlist_num', 'user_num_referrals', 'user_email')
新手犯的错误导致了一个看起来比实际情况复杂得多的问题 哦,我明白了,谢谢。当我放下桌子时,我不得不做一个瀑布式下降。然后我删除了我的migrations目录并进行了syncdb,当我进行迁移时,我必须使用--delete ghost migrations。我原以为所有这些都可以摆脱已经在admin中的用户,但仍然有一些是我为测试而弥补的。对吗?此外,不幸的是,虽然我可以在初始迁移文件中看到电子邮件字段,但管理员中仍然缺少该字段。在上面添加了其他详细信息/问题(已在评论中)。
DROP TABLE chishenma_app_category; COMMIT;
list_display = ('user_wechat', 'user_city', 'user_waitlist_status', 'user_waitlist_num', 'user_num_referrals', 'user_email')