如何过滤将字符串作为字段传递的查询结果

时间:2019-05-06 19:55:07

标签: django django-models django-queryset

仅当模型中设置了标志时,才需要附加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)

1 个答案:

答案 0 :(得分:1)

这绝对是错误的方法。

您已经在单独的模型中定义了机场。您应该将ManyToManyField定义为它们之间的关系,而不是在DistributionList模型上动态定义字段。然后您的脚本可以根据这种关系进行过滤。