2010-07-24 22 views
5

tôi có các mô hình sau:Trong Django tôi có một truy vấn phức tạp, nơi tôi chỉ cần các giá trị duy nhất thông qua một khóa ngoại, là điều này có thể?

 
class Indicator(models.Model): 
    name = models.CharField(max_length=200) 
    category = models.ForeignKey(IndicatorCategory) 
    weight = models.IntegerField() 
    industry = models.ForeignKey(Industry) 

    def __unicode__(self): 
     return self.name 
    class Meta: 
     ordering = ('name',) 

class IndicatorRatingOption(models.Model): 
    indicator = models.ForeignKey(Indicator) 
    description = models.TextField() 
    value = models.FloatField(null=True) 

    def __unicode__(self): 
     return self.description 

class Rating(models.Model): 
    product = models.ForeignKey(Product, null=True) 
    company = models.ForeignKey(Company, null=True) 
    rating_option = models.ForeignKey(IndicatorRatingOption) 
    value = models.IntegerField(null=True) 

Những gì tôi cần làm là nhận được tất cả các tùy chọn của một công ty của hai công ty mà không cần phải chúng chồng lên nhau trên các chỉ số của họ (rating.rating_option.indicator). Nếu có xung đột, công ty 'a' sẽ luôn thắng trong công ty 'b'. Làm thế nào để tôi làm điều này?

Trả lời

3

này hoạt động:

Rating.filter(company__in=[company_a, company_b]).distinct() 

(câu trả lời gốc)

Bạn đã thử

IndicatorRatingOptions.filter(company__in=[company_a, company_b]).distinct() 

?

Các vấn đề liên quan