2011-06-25 14 views
-2

ジャンゴモデルの深さ検索私は三つのモデルを持っている

  • MTI =材料に関する情報
  • MTD =絵にありマテリアル説明
  • MTIIMAGE =各色とサイズのため

I異なる色を返すクエリを作成しようとしていますが、私が得ているカラー結果は一意ではありません:

[: - ミディアム黒、MTD 1234567:1122334455 - ミディアムピンクMTD]

class mti(models.Model): 
    id = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=255) 
    item = models.ForeignKey(item) 
    country = models.ForeignKey(country) 
    dept = models.ForeignKey(dept) 
    fabric = models.ForeignKey(fabric) 
    sesason = models.ForeignKey(season) 
    sale = models.FloatField() 
    endUser = models.FloatField() 
    description = models.TextField(max_length=1000,blank=True,null=True) 
    year = models.CharField(max_length=255,default=strftime("%Y", gmtime())) 
    front_page = models.BooleanField(verbose_name="Front Page",default=True) 
    active = models.BooleanField(default=True) 
    stamp = models.DateTimeField(auto_now=True) 
    def __unicode__(self): 
     return u'%s - %s' % (self.name, self.description) 
    class Meta: 
     verbose_name = "MTI" 
     verbose_name_plural = verbose_name 

class mtd(models.Model): 
    id = models.AutoField(primary_key=True) 
    barcode = models.CharField(max_length=255) 
    mti = models.ForeignKey(mti) 
    size = models.ForeignKey(size) 
    color = models.ForeignKey(color) 
    weight = models.FloatField() 
    class Meta: 
     verbose_name = "MTD" 
     verbose_name_plural = verbose_name 
    def __unicode__(self): 
     return u'%s - %s %s' % (self.barcode, self.size.name,self.color.name) 

class mtiimage(models.Model): 
    id = models.AutoField(primary_key=True) 
    color = models.ForeignKey(color) 
    mtd= models.ForeignKey(mtd) 
    mti=models.ForeignKey(mti) 
    pic1 = models.ImageField(verbose_name="Product 1 Image",upload_to='product') 
    pic2 = models.ImageField(verbose_name="Product 2 Image",upload_to='product') 
    pic3 = models.ImageField(verbose_name="Product 3 Image",upload_to='product') 
    stamp = models.DateTimeField(auto_now=True) 

    def __unicode__(self): 
     return u'%s - %s' % (self.mtd.barcode, self.color.name) 
    class Meta: 
     verbose_name = "MTI Pic" 
     verbose_name_plural = verbose_name 
結果が

になるように、私はこのクエリからの明確な色を取得できますか

mymti[0].mtd_set.all() 
[mtd: 1234567 - Medium black, mtd: 1122334455 - Medium pink, mtd: 12345678 
- Large black] 

私の意見は

mydept = dept.objects.get(pk=deptid) 
mymti = mti.objects.filter(dept=mydept).select_related() 

マイテンプレート

{% for i in mymti %} 
{% for m in i.mtd_set.all %}{{m.mtiimage_set.all.0.pic1.url}}{{m.mtiimage_set.all.0.color.name|lower}}{% endfor %} 
    {% endfor %} 
+1

-1:関連するフィールドを探して50行のモデルコードを読むことを期待する代わりに、問題のあるコードの数を減らしてください。 – Caspar

+0

モデルの設計がうまくいかないような臭いがあります。正確に達成しようとしているのは何ですか?あなたはどのようにして大きな黒よりも中程度の黒を選択しましたか?あなたの目標を説明しながら、@キャスパーが示唆したように無関係なものを取り除く。 – Udi

答えて

0

は、私が直接

mti.mtiimage_set.all中のn() 印刷n.colorのためにそれを照会することができている をMTIするmtiimage外部キーを置くことによって、私のモデルを再設計することで、この問題を解決しました.name

関連する問題