[英]django email list field
我想创建一个包含电子邮件列表的字段。 我的model是这样的:
class Alerts(models.Model):
emails = MultiEmailField()
events = models.OneToOneField(Event, on_delete=models.CASCADE)
一切都很好,但是当这个模型保存在数据库中时,它是这样的
{
"id": 11,
"emails": "['ht@ht.com, bb@bb.com']",
"events": 13
}
'emails' 键中的列表表示为字符串“['ht@ht.com, bb@bb.com']”,而不是列表 ['ht@ht.com, bb@bb.com']。 我尝试了不同的方法、解析器和方法,但没有成功。 有没有办法在数据库中保存列表? 如果是第二个,有没有办法接收一个列表作为响应,而不是一个字符串,那也很好。 (数据库是MYSQL)
您可以拆分字符串以获取列表中的电子邮件,如下所示:
email_list = emails.replace("['", "").replace("']", "").split(", ")
models.JsonField
3.1 添加了可用于所有数据库后端的 models.JsonField。 您可以使用它来存储列表
class Alerts(models.Model):
emails = models.JsonField()
您可以使用django-mysql
库中的ListCharField
。
from django.db import models
from django_mysql.models import ListCharField
class Alerts(models.Model):
emails = ListCharField(
base_field=models.EmailField(...),
...
)
events = models.OneToOneField(Event, on_delete=models.CASCADE)
建立在 Dacx 的答案之上。 来自https://stackoverflow.com/a/1894296/5731101
怎么样:
import ast
class Alerts(models.Model):
raw_emails = MultiEmailField()
events = models.OneToOneField(Event, on_delete=models.CASCADE)
@property
def emails(self):
return ast.literal_eval(self.raw_emails)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.