仅当模型中设置了标志时,才需要附加mail_d_list
。
我正在使用用户已经进入的airport_code
来调用此函数。现在,我想将用户添加到电子邮件列表中,无论他们是否为用户选择了标志。
模型中的每个用户都有六个布尔标志,每个报告可能一个标志。标志的文字在中间。
我尝试过.get()
和.filter()
Models.py
class Aerodrome(models.Model):
''' Aerodrome model for storing three-letter airport codes iata,
airport description and the database partition informtion. '''
iata = models.CharField(max_length=3, primary_key=True)
customer = models.CharField(max_length=5)
name = models.CharField(max_length=100)
partition_code = models.CharField(max_length=6)
class DistributionList(models.Model):
''' List of all email addresses that are to receive
automated emails from the system '''
email = models.CharField(max_length=40, primary_key=True)
name = models.CharField(max_length=40)
receive_emails = models.BooleanField()
receives_report = models.ManyToManyField(Aerodrome)
script.py
for user in DistributionList.objects.filter(receives_report__iata=airport_code):
mail_d_list.append(user.email)
答案 0 :(得分:1)
这绝对是错误的方法。
您已经在单独的模型中定义了机场。您应该将ManyToManyField定义为它们之间的关系,而不是在DistributionList模型上动态定义字段。然后您的脚本可以根据这种关系进行过滤。