2017-03-21 7 views
0

オブジェクトリストの外部キーにアクセスする必要がありますが、動作させることはできません。これは倉庫モデルであり、それは他のアプリでDjango - テンプレートのForeignKeyへのアクセス(ただし、フィルタあり)

class Warehouse(models.Model): 
    # Relations 
    store = models.ForeignKey(
      Store, 
      blank=True, 
      null=True, 
      related_name='warehouse', 
      verbose_name=_('store'), 
     ) 

    # Attributes - Mandatory 
    name = models.CharField(
      max_length=50, 
      verbose_name=_('name'), 
     ) 

    # Attributes - Optional 
    address = models.CharField(
      max_length=100, 
      verbose_name=_('address'), 
     ) 
    phone = models.CharField(
      max_length=50, 
      verbose_name=_('phone'), 
     ) 

    # Attributes - Optional 
    phone2 = models.CharField(
      max_length=50, 
      blank=True, 
      null=True, 
      verbose_name=_('phone 2'), 
     ) 
    mail = models.EmailField(
      verbose_name=_('mail'), 
     ) 

class ProductStock(models.Model): 
    # Relations 
    product = models.ForeignKey(
     Product, 
     verbose_name=_('product'), 
    ) 
    warehouse = models.ForeignKey(
     Warehouse, 
     default = 1, 
     verbose_name=_('warehouse'), 
    ) 
    # Attributes - Mandatory 
    quantity = models.IntegerField(
     verbose_name=_('quantity'), 
    ) 

これは私のモデル

class Subcategory(models.Model): 
# Relations 

# Attributes - Mandatory 
name = models.CharField(
     max_length=50, 
     verbose_name=_('name'), 
    ) 

class Product(models.Model): 
    # Attributes - Mandatory 
    name = models.CharField(
      max_length=63, 
      unique=True, 
      verbose_name=_('name'), 
     ) 
    slug = models.SlugField(
      max_length=63, 
      unique=True, 
      editable=False, 
      verbose_name=_('slug'), 
     ) 
    title = models.CharField(
      max_length=63, 
      editable=False, 
      help_text=_('name to show the product in the templates'), 
      verbose_name=_('title') 
     ) 
    subcategory = models.ForeignKey(
      Subcategory, 
      verbose_name=_('subcategory'), 
     ) 
    # Precio de venta al público 
    sell_price = models.DecimalField(
      max_digits=10, 
      decimal_places=2, 
      verbose_name=_('sell price'), 
     ) 

    minimal_quantity = models.SmallIntegerField(
      default=1, 
      verbose_name=_('minimal quantity'), 
     ) 
    available = models.BooleanField(
      default=True, 
     ) 
    created = models.DateTimeField(
      editable=False, 
      verbose_name=_('created'), 
     ) 
    modified = models.DateTimeField(
      editable=False, 
      verbose_name=_('modified'), 
     ) 

あり、私は、製品の証券にアクセスする必要がこれは私の機能表示です

def product_stock_list(request, subcategory_id=None): 
subcategory = None 
subcategories = Subcategory.objects.all().order_by('family', 'name') 
products = Product.objects.filter(available=True).exclude(subcategory=1) 
if subcategory_id: 
    subcategory = get_object_or_404(Subcategory, id=subcategory_id) 
    products = products.filter(subcategory=subcategory) 
if request.GET: 
    try: 
     ean13 = request.GET.get('ean13') 
     ean13 = ean13.upper() 
     p = products.get(ean13=ean13) 
     return redirect(reverse('products:detail', kwargs=({'id': p.id, 'slug': p.slug}))) 
    except: 

     products = None 

return render(
     request, 
     'products/stock_list.html', 
     { 
     'subcategory': subcategory, 
     'subcategories': subcategories, 
     'products': products, 
     } 
    ) 

私が得ようとしているリスト製品の数量は、ID = 1の倉庫の製品数量だけです。

私は正確にこれが必要: Produc1 - 数量 Product2 - 数量 Product3 - 数量 ... ... ProductN - 数量あなたの助けを

ありがとう!

+0

あなたの倉庫モデルを提供してください! – shuboy2014

+0

すでに投稿に追加されています!おかげで – marcosgue

答えて

1

あり良い方法かもしれませんが、私はそれを行う方法は、最初に倉庫オブジェクトに

warehouse_1=Warehouse.objects.get(id=1) 

を取得し、今、この貫通その後のことができますループProductStock

products=ProductStock.objects.filter(warehouse=warehouse_1) 

からquantityを取得しています目的の結果を得るためのクエリ結果セット

for product in products: 
    if product.subcategory.id != '10': 
     print str(product.product.name) + " " + str(product.quantity) 

職場で?

+0

ありがとう!私は今試してみて、それがうまくいくかどうかを知らせます! – marcosgue

+0

OK。私にお知らせください。 Thansk。 –

+0

私は自分自身を間違って説明しているようだ、私はこれを試したときに私は必要なものが製品リストの在庫であることに気づいた。私は元の投稿のビューを追加します – marcosgue

関連する問題