#django
#джанго #django
Вопрос:
Даже я создал только один первичный ключ.Я не знаю, почему при переносе изменений отображается ошибка как множественный первичный ключ.
class Userinfo(models.Model):
''' User info '''
user_name = models.CharField(max_length=30, unique=True, null=False,primary_key=True)
full_name = models.CharField(max_length=50, null=False)
user_email = models.EmailField(max_length=254,primary_key=False)
college_name = models.CharField(max_length=50)
city = models.CharField(max_length=50)
country = models.CharField(max_length=50)
profile_img = models.ImageField(upload_to=upload_rename, blank=True)
Миграции
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('userinfo', '0012_delete_authdetails'),
]
operations = [
migrations.AlterField(
model_name='userinfo',
name='user_name',
field=models.CharField(max_length=30, primary_key=True, serialize=False, unique=True),
),
migrations.RemoveField(
model_name='userinfo',
name='id',
)
]
Может кто — нибудь помочь с этим ??
Комментарии:
1. Каково текущее определение? Вы получаете ошибку с помощью
makemigrations
илиmigrate
? Если последнее, можете ли вы также опубликовать сценарий миграции, которыйmakemigrations
создает.2. я добавил сценарий миграции
3. Я думаю, вам, вероятно, придется сделать это более чем за один шаг, возможно, даже отредактировать файлы миграции. В качестве альтернативы вы можете сбросить все существующие данные в json / yaml с помощью
dumpdata
, воссоздать свою таблицу с новой ключевой структурой и снова загрузить данные с помощьюloaddata
. Последнее, вероятно, проще, и я не уверен, что первое вообще возможно…4. Я нашел этот старый пост об изменении pks… вы могли бы попробовать этот подход, но он старый — не вижу ничего, что не работало бы в Django 2 или 3… blog.hexack.fr/en/change-the-primary-key-of-a-django-model.html
Ответ №1:
Попробуйте это :
class Userinfo(models.Model):
''' User info '''
user_name = models.CharField(max_length=30, unique=True, null=False,primary_key=True)
full_name = models.CharField(max_length=50, null=False)
user_email = models.EmailField(max_length=254)
college_name = models.CharField(max_length=50)
city = models.CharField(max_length=50)
country = models.CharField(max_length=50)
profile_img = models.ImageField(upload_to=upload_rename, blank=True)
Комментарии:
1. Я что-то упускаю? Я не вижу никаких различий между этим и исходным кодом???
2. произошло изменение в поле электронной почты, где я назначал первичный ключ как false, потому что я думал, что возможно, что поле электронной почты было первичным ключом по умолчанию