Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何将自定义id字段转换为普通整数字段?_Django_Django Models_Django Migrations_Django Database_Django 1.11 - Fatal编程技术网

Django 如何将自定义id字段转换为普通整数字段?

Django 如何将自定义id字段转换为普通整数字段?,django,django-models,django-migrations,django-database,django-1.11,Django,Django Models,Django Migrations,Django Database,Django 1.11,我正在拼命地尝试与Django迁移相处,请帮助我 这就是我所拥有的: class ReceiptNumber(models.Model): id = models.AutoField(primary_key=True, unique=True) 这就是我需要的: class ReceiptNumber(models.Model): number = models.IntegerField() “number”应该包含以前id中的数据。执行此操作时,Django将创建默认的ID

我正在拼命地尝试与Django迁移相处,请帮助我

这就是我所拥有的:

class ReceiptNumber(models.Model):
    id = models.AutoField(primary_key=True, unique=True)
这就是我需要的:

class ReceiptNumber(models.Model):
    number = models.IntegerField()
“number”应该包含以前id中的数据。执行此操作时,Django将创建默认的ID字段。为了不破坏与其他表的关系,这个表需要具有与以前相同的ID

你能帮忙吗?我尝试了很多方法来解决这个问题,但我真的不知道怎么做。我需要一个循序渐进的向导。合乎逻辑的方法是只克隆id字段,但我不知道如何以及在哪里做


非常感谢你的帮助!已经为此浪费了几天时间。

编号
字段添加到
ReceiptNumber
模型后,运行
makemigrations
。现在更改迁移中的
操作
列表以执行以下操作:

# This is your migration
from django.db import migrations, models

def copy_id_to_number(apps, schema_editor):
    ReceiptNumber = apps.get_model('receipts_app', 'ReceiptNumber')

    for receipt_number in ReceiptNumber.objects.all():
        receipt_number.save()


class Migration(migrations.Migration):

    dependencies = [
        ('receipts_app', '0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='receiptnumber',
            name='number',
            field=models.IntegerField(default=1),
            preserve_default=False,
        ),
        migrations.RunPython(copy_id_to_number),
    ]    


number
字段添加到
ReceiptNumber
模型后,运行
makemigrations
。现在更改迁移中的
操作
列表以执行以下操作:

# This is your migration
from django.db import migrations, models

def copy_id_to_number(apps, schema_editor):
    ReceiptNumber = apps.get_model('receipts_app', 'ReceiptNumber')

    for receipt_number in ReceiptNumber.objects.all():
        receipt_number.save()


class Migration(migrations.Migration):

    dependencies = [
        ('receipts_app', '0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='receiptnumber',
            name='number',
            field=models.IntegerField(default=1),
            preserve_default=False,
        ),
        migrations.RunPython(copy_id_to_number),
    ]    


您好,谢谢您的输入,但我需要的数字字段是一个整数只。没有唯一密钥和主键。Instaed我需要默认ID字段作为主键,只想在数字字段中包含当前数据。是否希望此数字位于数据库中?您好,谢谢您的输入,但我只需要数字字段为整数。没有唯一密钥和主键。Instaed我需要默认ID字段作为主键,只想在数字字段中包含当前数据。是否希望此数字位于数据库中?