#23415: OneToField reference to default 'id' instead of actual primary key
----------------------------+------------------------------------
Reporter: sky-chen | Owner: nobody
Type: Bug | Status: new
Component: Migrations | Version: 1.7
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
----------------------------+------------------------------------
Description changed by sky-chen:
Old description:
> == Reproduce ==
> 1. create a new project 'bug'
> 2. create two app 'deg', 'pubsite'
> 3. create models:
>
> {{{
> # bug/deg/models.py
> from django.db import models
>
> # Clients
> class Client(models.Model):
> client_id = models.IntegerField('ID', primary_key=True)
> name = models.CharField('Name', max_length=255)
> short_name = models.CharField('Short name', max_length=35)
>
> class Meta:
> managed = False
> db_table = 'Clients'
> verbose_name = 'Client'
>
> # bug/pubsite/models.py
> from django.db import models
> from django.contrib.auth.models import User
> from deg.models import Client
>
> class Account(models.Model):
> '''
> Represents a general tranzsoft account,
> which can be client of any associated departments
> '''
> user = models.OneToOneField(User)
> deg_client = models.OneToOneField(Client)
> }}}
>
> 4. make migrations
> 5. check sqlmigrate pubsite 0001
>
> {{{
> BEGIN;
>
> CREATE TABLE `pubsite_account` (`id` integer AUTO_INCREMENT NOT NULL
> PRIMARY KEY, `deg_client_id` integer NOT NULL UNIQUE, `user_id` integer
> NOT NULL UNIQUE);
> ALTER TABLE `pubsite_account` ADD CONSTRAINT
> pubsite_account_deg_client_id_1b7724045f4a7977_fk_Clients_id FOREIGN KEY
> (`deg_client_id`) REFERENCES `Clients` (`id`);
> ALTER TABLE `pubsite_account` ADD CONSTRAINT
> pubsite_account_user_id_3d5e7937e7fad36_fk_auth_user_id FOREIGN KEY
> (`user_id`) REFERENCES `auth_user` (`id`);
>
> COMMIT;
> }}}
New description:
== Reproduce ==
1. create a new project 'bug'
2. create two app 'deg', 'pubsite'
3. create models:
{{{
# bug/deg/models.py
from django.db import models
# Clients
class Client(models.Model):
client_id = models.IntegerField('ID', primary_key=True)
name = models.CharField('Name', max_length=255)
short_name = models.CharField('Short name', max_length=35)
class Meta:
managed = False
db_table = 'Clients'
verbose_name = 'Client'
# bug/pubsite/models.py
from django.db import models
from django.contrib.auth.models import User
from deg.models import Client
class Account(models.Model):
user = models.OneToOneField(User)
deg_client = models.OneToOneField(Client)
}}}
4. make migrations
5. check sqlmigrate pubsite 0001
{{{
BEGIN;
CREATE TABLE `pubsite_account` (`id` integer AUTO_INCREMENT NOT NULL
PRIMARY KEY, `deg_client_id` integer NOT NULL UNIQUE, `user_id` integer
NOT NULL UNIQUE);
ALTER TABLE `pubsite_account` ADD CONSTRAINT
pubsite_account_deg_client_id_1b7724045f4a7977_fk_Clients_id FOREIGN KEY
(`deg_client_id`) REFERENCES `Clients` (`id`);
ALTER TABLE `pubsite_account` ADD CONSTRAINT
pubsite_account_user_id_3d5e7937e7fad36_fk_auth_user_id FOREIGN KEY
(`user_id`) REFERENCES `auth_user` (`id`);
COMMIT;
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/23415#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/066.20cfa892e3dbe81af1e473c356027c0d%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.