Problème table d'association Django-Python
Fermé
Ibilolz
Messages postés
130
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
26 juin 2023
-
3 juin 2014 à 11:25
Ibilolz Messages postés 130 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023 - 4 juin 2014 à 10:00
Ibilolz Messages postés 130 Date d'inscription mardi 1 avril 2014 Statut Membre Dernière intervention 26 juin 2023 - 4 juin 2014 à 10:00
A voir également:
- Problème table d'association Django-Python
- Table ascii - Guide
- Table des matières word - Guide
- Citizen code python avis - Accueil - Outils
- Association avec le server freebox en cours freeplug vert - Forum Freebox
8 réponses
Utilisateur anonyme
3 juin 2014 à 12:32
3 juin 2014 à 12:32
invalid literal for int() with base 10: 'S001'
Le message est clair, tu demandes de transformer la chaîne S001 en entier, ce qui est sommes toutes impossibles.
Le message est clair, tu demandes de transformer la chaîne S001 en entier, ce qui est sommes toutes impossibles.
Ibilolz
Messages postés
130
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
26 juin 2023
Modifié par Ibilolz le 3/06/2014 à 13:02
Modifié par Ibilolz le 3/06/2014 à 13:02
J'ai jamais voulu la transformer en entier, je veux juste afficher mon champs. Comment je peux faire ? Voici mon template pour l'afficher :
<tr><th>Identifiant Matériel</th><th>Salle</th><th>Date de Placement</th></tr> {% for y in dispo %} <tr><td>{{ y.id_mat }}</td><td>{{ y.num_salle }}</td><td>{{ y.date}}</td></tr> {% endfor %} </table> </zed3>
Utilisateur anonyme
3 juin 2014 à 13:08
3 juin 2014 à 13:08
J'ai jamais voulu la transformer en entier
Alors c'est django, dans ce cas, montre le traceback complet, on peut pas deviner...
num_salle, je pense devrait être un IntegerField
Alors c'est django, dans ce cas, montre le traceback complet, on peut pas deviner...
num_salle, je pense devrait être un IntegerField
Ibilolz
Messages postés
130
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
26 juin 2023
3 juin 2014 à 13:12
3 juin 2014 à 13:12
Si je le mets en IntegerField Je ne peux plus appeler mes salles S001, S002 et c'est une de mes contraintes .
Ibilolz
Messages postés
130
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
26 juin 2023
3 juin 2014 à 14:09
3 juin 2014 à 14:09
Et je peux faire quoi avec ça ? afficher la partie entière de ma chaîne ? ça va pas faire terrible
Ibilolz
Messages postés
130
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
26 juin 2023
3 juin 2014 à 14:32
3 juin 2014 à 14:32
Mais enfaîte j'ai pu afficher le num_salle en S001 dans la table salle (voir lien image), le problème est du aux liens entre les tables et je ne sais pas pourquoi.
Utilisateur anonyme
3 juin 2014 à 15:12
3 juin 2014 à 15:12
Non mais le problème est dans la récupération de la valeur dans ton template.
Pour cela, tu devrais créer une méthode dans ta classe Emplacement
et modifier ton template pour accéder à cette valeur
Maintenant ne connaissant pas trop django, et ne pouvant tester, l'esprit est là...
Pour cela, tu devrais créer une méthode dans ta classe Emplacement
class Emplacement(models.Model): id_empl = models.IntegerField(primary_key=True) id_mat = models.ForeignKey(Materiel, db_column='id_mat') date = models.DateField() num_salle = models.ForeignKey(Salle, db_column='num_salle') def getNum(self): return int(self.num_salle.strip('S')) class Meta: managed = False db_table = 'emplacement'
et modifier ton template pour accéder à cette valeur
<tr><th>Identifiant Matériel</th><th>Salle</th><th>Date de Placement</th></tr> {% for y in dispo %} <tr><td>{{ y.id_mat }}</td><td>{{ y.getNum() }}</td><td>{{ y.date}}</td></tr> {% endfor %} </table> </zed3>
Maintenant ne connaissant pas trop django, et ne pouvant tester, l'esprit est là...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ibilolz
Messages postés
130
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
26 juin 2023
Modifié par Ibilolz le 3/06/2014 à 16:14
Modifié par Ibilolz le 3/06/2014 à 16:14
Même erreur, voici le traceback :
Environment: Request Method: GET Request URL: http://127.0.0.1:8000/inter1/inventaire/ Django Version: 1.6.4 Python Version: 2.7.3 Installed Applications: ('django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', 'inter1', 'connec') Installed Middleware: ('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware') Template error: In template /home/thomas/Documents/Dev/templates/inter1/Inventaire.html, error at line 35 invalid literal for int() with base 10: 'S001' 25 : </table> </zed2> 26 : 27 : 28 : <h2> <strong><i>Disposition</i></strong> du matériel : </h2> 29 : <span onclick="showHide(this, document.getElementById('spoiler3'));">Afficher</h2></span><br> 30 : <zed3 id="spoiler3" style="display:none;"> 31 : 32 : <table style="width:100%; border-spacing:0;"> 33 : <tr><th>Identifiant Matériel</th><th>Salle</th><th>Date de Placement</th></tr> 34 : {% for y in dispo %} 35 : <tr><td>{{ y.id_mat }}</td><td> {{ y.num_salle }} </td><td>{{ y.date}}</td></tr> 36 : {% endfor %} 37 : </table> </zed3> 38 : 39 : 40 : {% endblock %} 41 : 42 : 43 : 44 : 45 : Traceback: File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 114. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/thomas/Documents/Dev/inter1/views.py" in inventaire 34. return render(request, 'inter1/Inventaire.html', locals()) File "/usr/local/lib/python2.7/dist-packages/django/shortcuts/__init__.py" in render 53. return HttpResponse(loader.render_to_string(*args, **kwargs), File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py" in render_to_string 169. return t.render(context_instance) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render 140. return self._render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _render 134. return self.nodelist.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node 78. return node.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render 123. return compiled_parent._render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _render 134. return self.nodelist.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node 78. return node.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py" in render 62. result = block.nodelist.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render_node 78. return node.render(context) File "/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.py" in render 196. nodelist.append(node.render(context)) File "/usr/local/lib/python2.7/dist-packages/django/template/debug.py" in render 88. output = self.filter_expression.resolve(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in resolve 585. obj = self.var.resolve(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in resolve 735. value = self._resolve_lookup(context) File "/usr/local/lib/python2.7/dist-packages/django/template/base.py" in _resolve_lookup 771. current = getattr(current, bit) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/related.py" in __get__ 316. qs = qs.filter(**params) File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in filter 590. return self._filter_or_exclude(False, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in _filter_or_exclude 608. clone.query.add_q(Q(*args, **kwargs)) File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py" in add_q 1198. clause = self._add_q(where_part, used_aliases) File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py" in _add_q 1234. current_negated=current_negated) File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/query.py" in build_filter 1125. clause.add(constraint, AND) File "/usr/local/lib/python2.7/dist-packages/django/utils/tree.py" in add 104. data = self._prepare_data(data) File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/where.py" in _prepare_data 79. value = obj.prepare(lookup_type, value) File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/where.py" in prepare 352. return self.field.get_prep_lookup(lookup_type, value) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py" in get_prep_lookup 1085. return super(IntegerField, self).get_prep_lookup(lookup_type, value) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py" in get_prep_lookup 369. return self.get_prep_value(value) File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py" in get_prep_value 1079. return int(value) Exception Type: ValueError at /inter1/inventaire/ Exception Value: invalid literal for int() with base 10: 'S001'
Utilisateur anonyme
3 juin 2014 à 16:05
3 juin 2014 à 16:05
C'est que l'erreur ne vient pas de là... Peux-tu montrer le traceback complet comme demander déjà bien plutôt, en indiquant la ligne où se trouve l'erreur ?
Utilisateur anonyme
3 juin 2014 à 17:31
3 juin 2014 à 17:31
Ton erreur se trouve apparemment dans la fonction get_prep_value...
Modifie là pour
Modifie là pour
def get_prep_value(self, value): return value
Ibilolz
Messages postés
130
Date d'inscription
mardi 1 avril 2014
Statut
Membre
Dernière intervention
26 juin 2023
4 juin 2014 à 10:00
4 juin 2014 à 10:00
cela n'a rien changé.