Django-fr

Forum

#1 04-05-2012 07:42:51

gerard13
Membre
Inscription : 25-05-2011
Messages : 7

meta.managed à False (vues dans la BD)

bonjour,
j'ai une question concernant l'utilisation de vues (par exemple avec mysql).
La doc conseille d'ajouter tous les champs, mais je ne comprends pas si on doit ajouter la clé primaire ou pas?
Détail:
class A(models.Model):
attr1 = ...
attr2 = ...
...
attr100 = ...

je fais une vue pour ne manipuler que l'attr1:
class attr1_A(models.Model):
attr1 = ...
class Meta:
  managed = False
  db_table = 'attr1_A'

dans la doc https://docs.djangoproject.com/en/1.3/r … s/options/:
"
All other aspects of model handling are exactly the same as normal. This includes
Adding an automatic primary key field to the model if you don't declare it. To avoid confusion for later code readers, it's recommended to specify all the columns from the database table you are modeling when using unmanaged models.
"

faut il ajouter une cle primaire dans attr1_A ? Pourtant, qaund je cree ma vue dans mysql, je n'ai pas de cle primaire? ou bien s'agit il simplement de mettre le nom de la cle primaire de l'objet A?

merci d'avance pour votre aide

Hors ligne

#2 04-05-2012 07:50:20

yohann gabory
Membre
Inscription : 11-08-2010
Messages : 8

Re : meta.managed à False (vues dans la BD)

Bonjour,
De deux chose l'une, soit tu part de zéro, c'est a dire sans base de
données et dans ce cas django va generer pour toi une clef primaire auto
incrementee, soit tu a deja une base de donnees et tu doit, dans ce cas
preciser qu'elle est ta cle primaire dans tes modèle avec l'option
primary_key a true.

Le 4 mai 2012 08:43, "gerard13" <solarg87 _AT_ gmail.com> a écrit :

bonjour,
j'ai une question concernant l'utilisation de vues (par exemple avec
mysql).
La doc conseille d'ajouter tous les champs, mais je ne comprends pas si on
doit ajouter la clé primaire ou pas?
Détail:
class A(models.Model):
attr1 = ...
attr2 = ...
...
attr100 = ...

je fais une vue pour ne manipuler que l'attr1:
class attr1_A(models.Model):
attr1 = ...
class Meta:
managed = False
db_table = 'attr1_A'

dans la doc https://docs.djangoproject.com/en/1.3/ref/models/options/:
"
All other aspects of model handling are exactly the same as normal. This
includes
Adding an automatic primary key field to the model if you don't declare
it. To avoid confusion for later code readers, it's recommended to specify
all the columns from the database table you are modeling when using
unmanaged models.
"

faut il ajouter une cle primaire dans attr1_A ? Pourtant, qaund je cree ma
vue dans mysql, je n'ai pas de cle primaire? ou bien s'agit il simplement
de mettre le nom de la cle primaire de l'objet A?

merci d'avance pour votre aide

Hors ligne

#3 05-05-2012 06:15:38

gerard13
Membre
Inscription : 25-05-2011
Messages : 7

Re : meta.managed à False (vues dans la BD)

yohann gabory a écrit :

Bonjour,
De deux chose l'une, soit tu part de zéro, c'est a dire sans base de
données et dans ce cas django va generer pour toi une clef primaire auto
incrementee, soit tu a deja une base de donnees et tu doit, dans ce cas
preciser qu'elle est ta cle primaire dans tes modèle avec l'option
primary_key a true.


bonjour,
non, je ne pars pas de zero, la BD existe, et je cree la vue depuis l'interface mysql en ligne de commandes. Ce que je ne comprends pas, c'est comment Django va utiliser le nouveau model associé à cette vue (au sens mysql) ?
Dans les exemples de vues mysql que j'ai trouve, les gens ne montrent jamais qu'il y a une cle primaire dans la vue, ce qui est peut etre normal?
Le probleme avec l'exemple que j'ai donne dans mon message initial est que:
- avec mysql, j'obtiens toutes les donnees en parcourant la "vue"
- depuis le shell Django, l'interrogation du nouveau model me renvoie "vide"!

Pour l'instant, j'ai supprime ce nouveau model car dans l'interface d'admin de Django, j'ai eu une erreur lie a la vue.
J'aimerais bien trouve un exemple d'utilisation de vue mysql

merci pour ta reponse,

gerard

Hors ligne

#4 05-05-2012 09:49:08

fsx999
Membre
Inscription : 22-03-2011
Messages : 8

Re : meta.managed à False (vues dans la BD)

tu créer ta vue dans mysql, mais il faut qu'il y ait un champ unique qui
sert de clé primaire.
Ensuite tu écris ton model exactement comme est ta vue en indiquant à
ton model quel est le champ qui est primaire.
Attention : si tu veux écrire dans ta vue, il faut qu'elle puisse l'être
(voir mysql). Si ta vue est composé de plusieurs tables elle ne peut pas
être modifiée

Le 05/05/2012 07:15, gerard13 a écrit :
> [quote=yohann gabory]Bonjour,
> De deux chose l'une, soit tu part de zéro, c'est a dire sans base de
> données et dans ce cas django va generer pour toi une clef primaire auto
> incrementee, soit tu a deja une base de donnees et tu doit, dans ce cas
> preciser qu'elle est ta cle primaire dans tes modèle avec l'option
> primary_key a true.
> [/quote]
>
>
> bonjour,
> non, je ne pars pas de zero, la BD existe, et je cree la vue depuis
> l'interface mysql en ligne de commandes. Ce que je ne comprends pas, c'est
> comment Django va utiliser le nouveau model associé à cette vue (au sens
> mysql) ?
> Dans les exemples de vues mysql que j'ai trouve, les gens ne montrent
> jamais qu'il y a une cle primaire dans la vue, ce qui est peut etre normal?
> Le probleme avec l'exemple que j'ai donne dans mon message initial est
> que:
> - avec mysql, j'obtiens toutes les donnees en parcourant la "vue"
> - depuis le shell Django, l'interrogation du nouveau model me renvoie
> "vide"!
>
> Pour l'instant, j'ai supprime ce nouveau model car dans l'interface
> d'admin de Django, j'ai eu une erreur lie a la vue.
> J'aimerais bien trouve un exemple d'utilisation de vue mysql
>
> merci pour ta reponse,
>
> gerard
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

Pied de page des forums