当前位置: 首页 > 面试题库 >

django auth用户截断电子邮件字段

卫泉
2023-03-14
问题内容

我的django.contrib.auth用户模型有一个问题,其中电子邮件max_length为75。

我从facebook api接收到超过75个字符的电子邮件地址,我需要(真的很想)将它们存储在用户中,以便来自facebook
connect和其他用户的连续性。

我可以Data truncated for column 'email' at row 1通过手动编辑mySql数据库中的字段来解决“ ”问题,但是
有更好的方法来解决此问题吗? 最好是一个 不涉及我 每次为模式更改而重置 数据库时手动编辑数据库的数据库

我可以编辑数据库,只要可以将其添加到重置脚本或initial_data.json文件即可。


问题答案:

EmailField 75个字​​符的长度在django中被硬编码。您可以这样解决:

from django.db.models.fields import EmailField
def email_field_init(self, *args, **kwargs):
  kwargs['max_length'] = kwargs.get('max_length', 200)
  CharField.__init__(self, *args, **kwargs)
EmailField.__init__ = email_field_init

但这会更改所有EmailField字段的长度,因此您也可以尝试:

from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
from django.db import models
User.email = models.EmailField(_('e-mail address'), blank=True, max_length=200)

两种方式最好将这段代码放在INSTALLED_APPS中的django.contrib.auth之前的任何模块的init中。

从Django 1.5开始,您可以使用基于AbstractUser模型的自定义模型,因此可以使用自己的字段和长度。在您的模型中:

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    email = models.EmailField(_('e-mail address'), blank=True, max_length=200)

在设置中:

AUTH_USER_MODEL = 'your_app.models.User'


 类似资料:
  • 您可以通过此界面创建和管理域的电子邮件帐户。 您可以创建电子邮件地址,配置邮件客户端,更改密码以及直接访问您的Webmail。 创建电子邮件地址 要为您的域创建电子邮件地址,请按以下步骤操作 - Step 1 - 单击cPanel主页的“电子邮件”部分中的“ Email Accounts链接。 Step 2 - 在电子邮件帐户中,您会在顶部找到添加电子邮件帐户。 Step 3 - 添加您要创建的电

  • 我正在提示我的应用程序用户提供电子邮件凭据。 在用户插入电子邮件并通过后,我想验证该帐户。 我正在使用javax。邮政有没有办法验证帐户?只确保凭据确实有效——否则我想显示一个无效用户并传递消息。 也许是某种表演方式: 并在不发送任何内容的情况下检查身份验证异常。

  • 当发送带有消息ID头的任何电子邮件时,对它的任何回复都包括对该ID的命名的回复,以及可以命名父消息ID列表的引用,并且电子邮件客户端在线程视图中查看电子邮件列表时使用此信息来构造线程。 我的问题是:所有的电子邮件客户端(Outlook,Gmail,Exchange等)在发送回复到任何现有的电子邮件时,会在电子邮件头中追加回复字段吗? 我参考了RFC 2822,但它在回复中说字段是可选的。 In-R

  • 查看以下,详细了解如何处理与 iPhone 手机配对的 M600 上的电子邮件。 阅读您的 M600 上的电子邮件 如果您在手机上使用电子邮件通知,那么在您收到新邮件时会在您的 M600 看到通知。 阅读电子邮件 轻触通知。 利用您的 M600 回复电子邮件 您可以利用您的手腕表回复邮件。 回复电子邮件 轻触通知查看所有邮件 从屏幕底部向上滑动,查看您可以执行的操作。 轻触 Reply(回复),并

  • Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务。 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的。 我们来看看传统邮件是如何运作的。假设你现在在北京,要给一个香港的朋友发一封信,怎么做呢? 首先你得写好信,装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去。 信件会从就近的小

  • Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务。 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的。 我们来看看传统邮件是如何运作的。假设你现在在北京,要给一个香港的朋友发一封信,怎么做呢? 首先你得写好信,装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去。 信件会从就近的小