2017-09-26 9 views
0

Djangoでは分かりませんが(ちょっとしたことを入れない限り)、何か助けが必要です。djangoモデルグループの結果を属性で選択する方法

Article | Quantity | Infos | Store_1 | Store_2 | Store_n 
------- | -------- | ----- | ------- | ------- | ------- 
Ham  | 4  | Bla | 4.2 $ | 5.0 $ | 
Ham  | 6  | Bla | 6.0 $ | 7.5 $ | 

代わりに、私は唯一の印刷これを持って管理:

class Article(models.Model): 
    label = models.CharField(max_length=100) 
    unity = models.ForeignKey('Unity') 
    category = models.ForeignKey('Category') 
    user = models.ForeignKey(User) 

class Store(models.Model): 
    label = models.CharField(max_length=100) 
    address = models.TextField() 
    products = models.ManyToManyField(Article, through='Offer') 
    user = models.ForeignKey(User) 

class Offer(models.Model): 
    quantity = models.FloatField() 
    price = models.FloatField() 
    infos = models.TextField(blank=True) 
    article = models.ForeignKey('Article') 
    store = models.ForeignKey('Store') 
    user = models.ForeignKey(User) 

は私が望むに見える私のテンプレートでテーブルを印刷したい:

は、私は、これらの3つのモデルがあります:

0123:ビューでこれを行うことによって

Article | Quantity | Infos | Store_1 | Store_2 | Store_n 
------- | -------- | ----- | ------- | ------- | ------- 
Ham  | 4  | Bla | 4.2 $ |   | 
Ham  | 6  | Bla | 6.0 $ |   | 
Ham  | 4  | Bla |   | 5.0 $ | 
Ham  | 6  | Bla |   | 7.5 $ | 

テンプレート内のため

articles = Article.objects.filter(user=request.user) 
for article in articles: 
    article.offers = Offer.objects.filter(article=article) 

と、2つのネストされた:

{% for article in articles %} 
    {% for offer in article.offers %} 
     <tr> 
      ... 
     </tr> 
    {% endfor %} 
{% endfor %} 

私は考えることができる唯一のソリューションは、ビューの量でオファーを再編成することですが、それがためにネストされた多くのことを意味し、I私が望むことをする良い方法があるとはほとんど確信していますが、私は解決策を見つけることができません。

誰もがこれを手伝ってくれますか?どうもありがとう !

+0

私はあなたがこのためにシリアライザ関係に見てshoudlだと思います。http://www.django-rest- framework.org/api-guide/relations/ –

+0

store_1、store_2、store_nはどこから来たのですか? –

答えて

0

シリアライザ関係を使用して、これらの線に沿って何かを使用して、より効率的な方法であなたの目標を達成するのを助ける必要があります。

class OfferSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Offer 
     fields = ('quantity', 'infos', 'store') 


class ArticleSerializer(serializers.ModelSerializer): 
    offer = OfferSerializer() 

    class Meta: 
     model = BlogPost 
     fields = ('label', 'offer') 
+0

もし私が正しいのであれば、ModelSerializerは私のプロジェクトで使用しないDjango REST Frameworkでのみ利用できます。別の方法がありますか? – Gemkodor

関連する問題