Ich Migrationen auf meinem Produktionssystem ausgeführt wird, die eine Postgress-Datenbank verwendet, und wenn ich es laufen lasse, bekomme ich diesen Fehler:Django Postgress - mehrere Primärschlüssel sind nicht Fehler erlaubt
django.db.utils.ProgrammingError: multiple primary keys for table "website_experience" are not allowed
Aber funktioniert gut auf meine Entwicklung SQL Datenbank. Hier ist das Modell Ich arbeite mit:
class Experience (models.Model):
title = models.CharField(max_length = 60)
company = models.CharField(max_length = 60)
city = models.CharField(max_length = 60)
start_date = models.DateField(blank=False, default=datetime.now)
end_date = models.DateField(blank=True, null=True)
description = models.CharField(max_length = 1000)
creative_user = ForeignKey(CreativeUserProfile, models.CASCADE)
Zunächst wird das Feld creative_user (das mein erweiterte User-Modell ist) war ein Primärschlüssel, aber änderte es ein ForeignKey sein one to many Beziehung zwischen One CreativeUser auszudrücken viele Arbeitserfahrung haben.
ist die Migration vor und nach der Änderung zu ForeignKey
class Migration(migrations.Migration):
dependencies = [
('website', '0003_auto_20170510_1436'),
]
operations = [
migrations.CreateModel(
name='Experience',
fields=[
('title', models.CharField(max_length=60)),
('company', models.CharField(max_length=60)),
('city', models.CharField(max_length=60)),
('startDate', models.DateField()),
('endDate', models.DateField(blank=True, null=True)),
('creative_user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='website.CreativeUserProfile')),
],
),
]
so dass dies der Schaffung von Experience Modell zum Ausdruck bringt und dass creative_user war Primärschlüssel auf Modell. Dann, nachdem sie eine ForeignKey die Migration zu machen aussah:
class Migration(migrations.Migration):
dependencies = [
('website', '0004_experience'),
]
operations = [
migrations.AddField(
model_name='experience',
name='id',
field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
preserve_default=False,
),
migrations.AlterField(
model_name='experience',
name='creative_user',
field =models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.CreativeUserProfile'),
),
]
Während ich dies sagte, alle Arbeiten an Entwickler aber die Migration auf Postgress DB denkt, dass ich mehrere Primärschlüssel haben. Kann jemand etwas Licht auf das richten, was ich falsch mache?
Danke.