Django-fr

Forum

#1 23-03-2011 00:12:22

balbuzard
Membre
Inscription : 23-03-2011
Messages : 1

nécessaire d'indiquer les id auto increment

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

Pied de page des forums