繁体   English   中英

django email 列表字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM