django 1.10 从查询中获取单个对象

django 1.10 get individual objects out of query

我为订阅者设置了一个模型,以便进入我们的邮件列表。每当创建新博客 post 时,我都想给用户发电子邮件。我如何从模型中获取个人电子邮件地址和名字以用于每个人的电子邮件?我希望他们的名字出现在电子邮件中。

这是我的 models.py:

class EmailUpdates(models.Model):
    email = models.EmailField(max_length=100, blank=True, unique=True)
    first_name = models.CharField(max_length=100, blank=True)

    def __str__(self):
        return self.email

    def __unicode__(self):
        return self.email

这是我的 views.py:

def post_create(request):
    if not request.user.is_staff or not request.user.is_superuser:
        raise Http404()

    notification_subscribers = EmailUpdates.objects.all()
    form = PostForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.user = request.user
        instance.save()
        messages.success(request, "Successfully Created")
        for user in notification_subscribers:
            user.first_name = notification_subscribers.filter('first_name')
            user.email = notification_subscribers.filter('email')
            user_data = {
                'user_email': user.email,
                'user_first_name': user.first_name,
            }
            plaintext = get_template('email/post_create_email/email_text.txt')
            htmly = get_template('email/post_create_email/email_template.html')
            text_content = plaintext.render(user_data)
            html_content = htmly.render(user_data)

            subject = "{0}, a new blog post has been made, Hurray!".format(user.first_name)
            from_email = 'xx@gmail.com'
            to_email = user.email
            msg = EmailMultiAlternatives(subject, text_content, from_email, [to_email])
            msg.attach_alternative(html_content, "text/html")
            msg.send()
        return HttpResponseRedirect(instance.get_absolute_url())

    context = {
        "form": form,
    }
    return render(request, "posts/post_form.html", context)

你在循环中做了一些奇怪的不必要的事情。 user 已经是 EmailSubscriber 的相关实例;它 已经 具有 first_nameemail 属性。您无需设置它们,您只需使用它们。