Thank you for you reply.

But I mean I want to create a table without primary key field. I want
to disable django's automatic add the id key with primary key feature.

The primary key field in old table doesn't exist, and I checked it's
not in the models.py too.
But after syncdb django add a primary key field 'id' automatically.

For example I wrote below in the models.py:

class TestPlanPermissions(models.Model):
    userid = models.IntegerField(unique=True)
    plan_id = models.IntegerField()
    permissions = models.IntegerField()
    grant_type = models.IntegerField()

But after sync db, django add a id filed in the table automatically:

mysql> DESCRIBE test_plan_permissions;
+-------------+---------+------+-----+---------+----------------+
| Field       | Type    | Null | Key | Default | Extra          |
+-------------+---------+------+-----+---------+----------------+
| id          | int(11) | NO   | PRI | NULL    | auto_increment |
| userid      | int(11) | NO   | UNI | NULL    |                |
| plan_id     | int(11) | NO   |     | NULL    |                |
| permissions | int(11) | NO   |     | NULL    |                |
| grant_type  | int(11) | NO   |     | NULL    |                |
+-------------+---------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

I don't want to create neither the id field nor other primary key
field.



On Nov 10, 7:20 pm, "Russell Keith-Magee" <[EMAIL PROTECTED]>
wrote:
> On Mon, Nov 10, 2008 at 7:59 PM, K*K <[EMAIL PROTECTED]> wrote:
>
> > Hi, all.
>
> > How can I create a new table without primary key in Django modeling. ?
>
> > I'm porting a old program to Django web framework. After inspect
> > database to modules.py and then syncdb, It create the id filed with
> > primary key attribute, how can I disable this feature ?
>
> inspectdb isn't perfect - it's just a starting point that will
> hopefully remove the need to do a lot of typing. It is entirely
> expected that you will need to tweak the model provided by inspectdb.
> If inspectdb is producing an extra 'id' field in the model it
> suggests, just delete that field from the suggested model.
>
> However, because of the way Django operates, you will need to nominate
> one of the fields in your model to be the primary key. In your case,
> I'm guessing that inspectdb can't find an obvious candidate for the
> primary key, so it has given up and put an extra 'id' field into the
> definition it suggests.
>
> You can choose any field you want to be the primary key (provided it
> actually contains unique data). It doesn't matter what that field is
> called - it just needs to set the primary_key attribute to True. For
> example, if one of your models has a 'name' field that could be used
> as a primary key, you would use a definition something like:
>
>     name = models.CharField(max_length=40, primary_key=True)
>
> Yours,
> Russ Magee %-)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to