Python Django REST框架:创建令牌时出现完整性错误

Python Django REST框架:创建令牌时出现完整性错误,python,django,django-rest-framework,django-authentication,Python,Django,Django Rest Framework,Django Authentication,我想使用名为Account的自定义用户模型为每个新用户生成一个令牌。但是,authtoken\u令牌表似乎有一个外键,默认用户表名为auth\u user。这会产生以下完整性错误: 下面是我如何在models.py中生成新令牌的方法: @receiver(post_save, sender=Account) def create_auth_token(sender, instance=None, created=False, **kwargs): if created:

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

下面是我如何在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框架文档的建议,我在身份验证应用程序的初始迁移中添加了所需的_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',
            },
        ),
    ]
然而,即使这样也无济于事。在数据库中手动更改外键后,令牌成功生成,但身份验证测试仍然失败


有人能指出我在迁移中可能犯了什么错误吗?

您在settings.py中设置了AUTH\u USER\u模型了吗?看起来您可能在执行此操作之前已经运行了迁移并创建了rest framework令牌表。因此,用户外键指向内置的用户模型。是否确实要使用自定义模型?您的帐户模型看起来与内置用户非常相似。使用自定义模型会使事情复杂化。它看起来像是从令牌到用户表的关系。。。我同意@Alasdair的观点:AUTH_USER_模型没有正确设置。谢谢你的回答。实际上,我在settings.py文件的底部声明了AUTH_USER_模型。在Alasdair的建议下,我决定使用默认用户模型,这确实使事情变得更简单。
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',
            },
        ),
    ]