2010-07-24 8 views
5

Ho i seguenti modelli:In Django ho una query complessa in cui ho bisogno solo dei valori univoci tramite una chiave esterna, è possibile?

 
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) 

Che cosa devo fare è ottenere tutte le opzioni di rating aziendale di due società, senza averli sovrappongono sulle loro indicatori (rating.rating_option.indicator). Se c'è un conflitto, l'azienda "a" vincerebbe sempre la compagnia "b". Come faccio a fare questo?

risposta

3

Questo funziona:

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

(risposta originale)

Hai provato

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

?

Problemi correlati