Vous n'êtes pas identifié(e).
Bonjour,
Je début avec Django,
J'ai commencé par suivre la documentation officielle, et créer le système de poll avec un autre exemple (création de compte).
J'ai ceci dans mon models.py:
from django.db import models
class User(models.Model):
name = models.CharField(max_length=20)
login = models.CharField(max_length=10)
password = models.CharField(max_length=10)
key = models.CharField(max_length=2000)
class Server(models.Model):
hostname = models.CharField(max_length=20)
login = models.CharField(max_length=200)
J'ai créer les tables avec python manage.py syncdb, créé le projet sans soucis.
Je cherche à utiliser python manage.py shell.
Comme dans la doc, j'ai créé un objet (ici un bête Server)
s = Server('','galileo','user_1')
>>> s.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/var/lib/python-support/python2.5/django/db/models/base.py", line 311, in save
self.save_base(force_insert=force_insert, force_update=force_update)
File "/var/lib/python-support/python2.5/django/db/models/base.py", line 358, in save_base
manager.filter(pk=pk_val).extra(select={'a': 1}).values('a').order_by())):
File "/var/lib/python-support/python2.5/django/db/models/manager.py", line 102, in filter
return self.get_query_set().filter(*args, **kwargs)
File "/var/lib/python-support/python2.5/django/db/models/query.py", line 489, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/var/lib/python-support/python2.5/django/db/models/query.py", line 507, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/var/lib/python-support/python2.5/django/db/models/sql/query.py", line 1258, in add_q
can_reuse=used_aliases)
File "/var/lib/python-support/python2.5/django/db/models/sql/query.py", line 1201, in add_filter
self.where.add((alias, col, field, lookup_type, value), connector)
File "/var/lib/python-support/python2.5/django/db/models/sql/where.py", line 48, in add
params = field.get_db_prep_lookup(lookup_type, value)
File "/var/lib/python-support/python2.5/django/db/models/fields/__init__.py", line 202, in get_db_prep_lookup
return [self.get_db_prep_value(value)]
File "/var/lib/python-support/python2.5/django/db/models/fields/__init__.py", line 353, in get_db_prep_value
return int(value)
ValueError: invalid literal for int() with base 10: ''
>>> s = Server('1','galileo','user_1')
>>> s.save()
J'ai l'impression que nous sommes forcés de renseigner cette vaiable id pourtant autoincrement!
pas moyen de créer un quelconque object sans spécifier cette variable!
Je ne comprends pas ce point, voici ce que renvoie python manage.py syncdb
python manage.py sql unix_account
BEGIN;
CREATE TABLE `unix_account_user` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(20) NOT NULL,
`login` varchar(10) NOT NULL,
`password` varchar(10) NOT NULL,
`key` varchar(2000) NOT NULL
)
;
CREATE TABLE `unix_account_server` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`hostname` varchar(20) NOT NULL,
`login` varchar(200) NOT NULL
)
;
COMMIT;
Je travaille avec python-django 1.0.2-1+lenny2 sous Debian avec python 2.5 (je ne sais pas si ça aide)
Je vous remercie beaucoup de vos indications qui me permettront j'espère d'éviter d'avoir à entrer ce #!"?. de id alors qu'il devrait s'autoincrémenter tout seul!!
Bonne soirée
Hors ligne