如何在电子邮件中包含ManyToManyField? Django的

时间:2013-08-08 15:23:52

标签: python django email format

我的代码设置为每当在数据库中创建新的PurchaseOrder时向用户发送电子邮件。电子邮件看起来像这样:

如您所见,“产品”字段为空白。它是空白的原因是我正在使用ManyToManyField,我不知道如何通过电子邮件发送给用户。这是我的代码:

class PurchaseOrder(models.Model):
    product = models.ManyToManyField('Product')

def send_email_on_new_order(instance, created, raw, **kwargs):
    if not created or raw:
        return

    title_text =  'This is the title'
    body_text = 'Purchase Order System Details' + 'Product: ' + 'Vendor: ' + str(instance.vendor) + 'Price: ' + str(instance.price)
    email=EmailMessage(title_text, body_text, to=['youremail@gmail.com'])
    email.content_subtype = "html"
    email.send()
signals.post_save.connect(send_email_on_new_order, sender= PurchaseOrder, dispatch_uid = 'send_email_on_new_order')

class Product(models.Model):
    products = models.CharField(max_length=256)
    price_for_each_item = models.FloatField()

    def __unicode__(self):
        return self.products

基本上我想要包含在电子邮件的body_text中的是:ManyToManyField所以它会向用户发送一封电子邮件,其中包含'products'和'price_for_each_item'

1 个答案:

答案 0 :(得分:0)

您需要遍历您的产品。

我认为你可以这样做:

for item in instance.products:
    body_text += 'Product': item

虽然,您应该使用模板和EmailMessage类。