Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/01/2015, 20:17
germangutierrez
 
Fecha de Ingreso: enero-2015
Mensajes: 43
Antigüedad: 9 años, 11 meses
Puntos: 3
Respuesta: django content types left join

a ver ... yo tengo un modelo Encuestado relacionando al modelo usuario

Código:

class Encuestado(models.Model):
    usuario = models.ForeignKey('CUser')
    encuesta = models.ForeignKey('Surveys.Survey')
    .....
El modelo usuario vemos la relacion que tiene con su compania

Código:
class CUser(AbstractBaseUser):
    company = models.ForeignKey(Company)
y la compania tiene sede en un pais

Código:
class Company(models.Model):
   country = models.ForeignKey(CitiesLightCountry, null=True, blank=True)
Si yo quiero saber los Encuestados que su empresa tiene sede en argentina puedo usar
Código:
encuestados_de_argentina = Encuestado.objects.filter(usuario__company__country_name="argentina")
Si yo quiero tambien excluir companias cipayas puedo usar
Código:
encuestados_de_argentina = Encuestado.objects.exclude(usuario__company_name="clarin").filter(usuario__company__country_name="argentina")
o si ya tenemos una instancia del encuestado, podemos usar el dot operator
Código:
(gpegasus_project)desarrollo@cloud:~/public_html/web/gpegasus_project$ python manage.py shell
Python 2.7.3 (default, Jan  2 2013, 13:56:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from CompanyUser.models import Encuestado
>>> encuestado=Encuestado.objects.get(pk=1)
>>> encuestado.usuario.company
<Company: Diagnosis>
>>> encuestado.usuario.company.country
<CitiesLightCountry: Argentina>
>>> encuestado.usuario.company.country.name  
u'Argentina'

Última edición por germangutierrez; 13/01/2015 a las 20:26