以下是我在图片中的内容:
我想展示我用绿色着色的东西。基本上我想展示每个产品的成本。对于鲍勃来说,他花费12010美元,而吉尔花费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
答案 0 :(得分: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>
})。
此外,删除连接函数内的方括号将创建生成器而不是列表。这不会在内存中创建(无用的)中间列表,并且该过程会稍微快一些。我认为这是一个很好的习惯,如果您不得不使用大型列表,那么内存需求就会减少。
另一方面,null=True
对ManyToManyField
没有任何作用。 null=True
删除数据库级别的NOT NULL
子句,但m2m关系完全保存在单独的表中。如果模型在m2m关系中没有相关模型,则m2m表中根本没有记录。