0

这是我在图像中的内容:

我想显示我用绿色着色的内容。基本上我想显示每种产品的成本。对于 Bob,他花费了 12010 美元,而 Jill 花费了 12010 美元,总价为 24020 美元。

到目前为止,这是我的代码:

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

    def get_products(self):
        return "<BR> </BR>".join([p.products for p in self.product.all()])
    get_products.allow_tags = True

class Product(models.Model):
    products = models.CharField(max_length=256, null =True)
    price_for_each_item = models.FloatField() #Here is what I want to be displayed as green

我怎样才能做到这一点?请注意,每个产品都有一条新线。因此,我试图将每个单独的项目与该单独项目的价格放在同一行。例如这里是,

鲍勃 $12010.0

吉尔 $12010.0

4

1 回答 1

0

您可以使用字符串连接将名称与价格连接起来。如果products应该是字符串的第一部分和price_for_each_item第二部分,请使用:

def get_products(self):
    return "<br />".join("%s %s" % (p.products, p.price_for_each_item) for p in self.product.all())

一些不相​​关的评论:
请注意,根据 XHTML 标准(并由 HTML 标准推荐),没有任何实际内容的标签,如<br>标签应该是自关闭的(因此<br />而不是<br> </br>)。

此外,删除 join 函数内的方括号将创建一个生成器而不是列表。这不会在内存中创建一个(无用的)中间列表,并且该过程会稍微快一些。我认为这是一个好习惯,以防您不得不处理大量减少内存需求的大型列表。

另一个注意事项,null=True不在 a 上做任何事情ManyToManyFieldnull=True删除NOT NULL数据库级别的子句,但 m2m 关系完全保存在单独的表中。如果一个模型在 m2m 关系中没有相关模型,则 m2m 表中根本没有记录。

于 2013-08-07T20:49:31.800 回答