IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Lien entre models


Sujet :

Django Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut Lien entre models
    Boujour, donc voila j'ai une petite question et oui encore je suis desoler de tous le temps demander mais c'est que vous avez un bon forum pour l'entraide django.

    Donc voila j'ai deux models que j'aimerais lier entre eux j'ai deja reussi a lier User et Organisation.
    models:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Organisation(models.Model):
    	user = models.ForeignKey(User, unique=True)
    	Organisation_name = models.CharField(max_length=30)
    	icon = models.ImageField("icon*", upload_to='/tmp', null=True, blank=True)
    	category = models.CharField(max_length=30)
    	twitter_name = models.CharField(max_length=15)
    	website = models.URLField(null=True , blank=True)
    	def __unicode__(self):
    		return self.Organisation_name

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Outlet(models.Model):
    	organisation = models.ForeignKey(Organisation)
    	name = models.CharField(max_length=30)
    	twitter_name = models.CharField(max_length=15)
    	lat = models.DecimalField(max_digits=10, decimal_places=10)
    	lng = models.DecimalField(max_digits=10, decimal_places=10)
    	icon = models.ImageField("icon*", upload_to='/tmp', null=True, blank=True)
    	def __unicode__(self):
    		return self.name
    Comment je pourais relier ces deux models j'avais penser a faire passer un id dans url esque vous penser que c'est envisageable ou qu'il y a une meilleure solution, merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 62
    Points
    62
    Par défaut
    Je ne sais pas ce que tu veux faire, mais une foreignkey comme tu l'as utilisée entre ton modele 'central' (ex user) et ce qui gravite autour (orga, outlet) me semble une bonne solution.

    penser a faire passer un id dans url
    Heu, pas compris pour quoi faire.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Non en faite je veut que un user puisse avoir une organisation et cette organisation plusieurs outlet c'est pour cela que j'ai pense a l'id ou bien faire des requete sql peut etre pour faire le lien entre les outlet et l'organisation lors de la creation des outlets.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 62
    Points
    62
    Par défaut
    Tu peux étendre le modèle user : je te renvoie vers la conf qu'Olivier Meunier nous à présentée aux rencontres Django à Marseille.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Je ne pense pas que ce soit la bonne methode car apres si je veut relier des addresses a ces outlet j'ai encore le meme probleme et je ne peut pas le ratacher a user.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 62
    Points
    62
    Par défaut
    Alors tu fais une foreign key toute bête.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Oui ca je c'est bon mais apres comment faire le lien entre les tables au niveau des mes vues ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 62
    Points
    62
    Par défaut
    Comme cela

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    D'accord merci je vais essayer de voir tous cela car en faite moi j'aimerais tous simplement faire la requete sql : select outlet from Outlet, Address where Outlet.name=Address.outlet
    afin que l'utilisateur ne puisse voir que les outlets qui la cree et nous ceux des autres utilisateurs je rapelle mes 2 models.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Outlet(models.Model):
    	outlet_user = models.ForeignKey(User, unique=False)
    	name = models.CharField(max_length=30)
    	outlet_twitter_name = models.CharField(max_length=15)
    	lat = models.DecimalField(max_digits=10, decimal_places=6)
    	lng = models.DecimalField(max_digits=10, decimal_places=6)
    	outlet_icon = models.ImageField("icon*", upload_to='/tmp', null=True, blank=True)
    	def __unicode__(self):
    		return self.name

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Address(models.Model):
    	outlet = models.ForeignKey(Outlet)
    	number = models.IntegerField()
    	street = models.CharField(max_length=30)
    	city = models.CharField(max_length=30)
    	country = models.CharField(max_length=30)
    	def __unicode__(self):
    		return str(self.number) + " " + self.street + "," + self.city + "," + self.country

    Edit: je ne suis pas sur que ma requete sql peut fonctionner en faite surtout qu'il me semble que django s'attend a recevoir un int il me semble.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Bonjour, personne n'a eu ce probleme ?

  11. #11
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    en utilisant l'ORM de Django, tu dois pouvoir faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    outlets = Outlet.objects.filter(outlet_user=request.user)
    for outlet in outlets:
        print outlet
        print outlet.address
    pour faire cela, il faut modifier ton model Address:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    outlet = models.ForeignKey(Outlet, related_name='address')
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Merci pour ton aide, par contre si tu connais un tuto qui explique bien car moi j'ai vu pas mal d'explication mais pas d'exemple puis je vois comment faire dans le cas ou je fait moi meme la relation entre les tables dans ma views mais comment le faire automatiquement je sais pas si tu vois ce que je veut dire.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    C'est encore moi je voulais savoir si l'om pouver faire ce genre de requete sql avec django:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from outlet, offer where outlet.name=offer.outlet
    Sinon comment utiliser les clef etrangere, merci d'avance.

  14. #14
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    peux-tu poster ton model offer, merci.
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    bonjour,voila
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Offer(models.Model):
    	outlet = models.ForeignKey(Outlet, related_name='offer')
    	date = models.CharField(max_length=30)
    	time = models.CharField(max_length=30)
    	expiry_date = models.CharField(max_length=30) 
    	expiry_time = models.CharField(max_length=30)
    	deal = models.CharField(max_length=140) 
    	def __unicode__(self):
    		return self.deal

  16. #16
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Si tu as une instance d'offer et que tu veux récuperer l'outlet correspondant, tu fais simplement:
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Merci ca je sais seulement si je ne veut que les offres qui sont liee a l'outlet je fait comment, car avec offer.outlet j'ai le nom de toutes les offres et pas par outlets.

  18. #18
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    essaye en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Offer.objects.filter(outlet=myoutlet)
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  19. #19
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Merci bien en faite j'ai trouvee une solution qui ce raproche de ca la voila si ca peut aider quelqu'un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    offers_list = Offer.objects.filter(outlet__name=orgs)
    Du coup je passe le nom dans URL pour verifier, c'est la seul methode que j'ai reussi a trouver.

Discussions similaires

  1. Liens entre DropDownList et propriétés du model
    Par nabil81h dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 02/09/2014, 10h09
  2. [access & word] Liens entre Table et modeles
    Par scoubi_doo dans le forum Modélisation
    Réponses: 1
    Dernier message: 21/11/2007, 23h58
  3. lien entre les table de paradox
    Par salim_intic1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/05/2004, 16h00
  4. Réponses: 3
    Dernier message: 11/04/2004, 01h05
  5. [debutant][servlet]lien entre formulaire et servlet
    Par omega dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/03/2004, 08h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo