0

私はこのようなものを持っています:

class Basket(models.Model):
    owner = models.ForeignKey(User, related_name='user_basket', verbose_name='Owner')
    name = models.CharField("Basket_Name", max_length=30)
    products = models.ManyToManyField('Product', through='BasketProduct', blank=True, null=True)

class BasketProduct(models.Model):
    product = models.ForeignKey('Product')
    basket = models.ForeignKey('Basket')
    quantity = models.IntegerField()

ユーザーからすべての製品を取得Basketし、価格と名前の文字列を「ノートブック - 2、PC - 5、電話 - 1」の形式で作成してみます

私の試み:

user = request.user
b = Basket.objects.filter(owner=user)
bp = BasketProduct.objects.filter(basket=b)

for a in bp:
    a = '%s - %s' % (a.product, a.quantity)
    print a

これは、シェルで次のようなものを返します。

[06/Oct/2012 19:44:41] "GET /list/ HTTP/1.1" 200 0
PC - 3 #single object
Notebook - 1 #second single object

必要: string = "PC - 3, Notebook - 1"

助けてください

4

1 に答える 1

1

すでに実行している最初の 3 つのステートメントを実行できます。次に、最初の 3 つのステートメントの結果であるクエリセットをループして返された中間結果の配列を結合します。

', '.join(['%s - %s' % (a.product, a.quantity) for a in bp])
于 2012-10-06T17:53:05.053 に答える