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 -~----------~----~----~----~------~----~------~--~---