Django REST Framework:创建令牌时的完整性错误

时间:2015-10-10 20:08:38

标签: python django django-rest-framework django-authentication

我想使用名为Account的自定义用户模型为每个新用户生成一个令牌。但是,authtoken_token表似乎具有名为auth_user的默认用户表的外键。这会产生以下完整性错误:

 django.db.utils.IntegrityError: (1452, 'Cannot add or update a child
 row: a foreign key constraint fails (`db_edibus`.`authtoken_token`,
 CONSTRAINT `authtoken_token_user_id_56c22f4b_fk_auth_user_id` FOREIGN
 KEY (`user_id`) REFERENCES `auth_user` (`id`))')

以下是我在models.py中生成新标记的方法:

@receiver(post_save, sender=Account)
def create_auth_token(sender, instance=None, created=False, **kwargs):
    if created:
        Token.objects.create(user=instance)

根据REST Framework文档的建议,我在“身份验证”应用的初始迁移中添加了“needed_by”属性:

class Migration(migrations.Migration):

    dependencies = [
    ]

    needed_by = (
        ('authtoken', '0001_initial'),
    )

    operations = [
        migrations.CreateModel(
            name='Account',
            fields=[
                ('id', models.AutoField(primary_key=True, verbose_name='ID', auto_created=True, serialize=False)),
                ('password', models.CharField(verbose_name='password', max_length=128)),
                ('last_login', models.DateTimeField(null=True, verbose_name='last login', blank=True)),
                ('username', models.CharField(unique=True, max_length=40)),
                ('is_admin', models.BooleanField(default=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
            ],
            options={
                'db_table': 'tbl_authentication_account',
            },
        ),
    ]

然而,即使这样也无济于事。在数据库中手动更改外键后,成功生成了令牌,但身份验证测试仍然失败。

有人可以指出我可能在迁移中做错了吗?

0 个答案:

没有答案