Django 为什么我会得到“一个”;指非模型本地的字段;迁移以下模型时出错?

Django 为什么我会得到“一个”;指非模型本地的字段;迁移以下模型时出错?,django,django-models,Django,Django Models,我试图为一个简单的访问者管理系统创建一个数据库模式,通过扩展Django中内置的用户模型,我创建了两个名为Visitor和Host的模型。约会模型用于将访客和主持人之间的关系与其会议时间段进行映射。但是,当我运行python manage.py makemigrations时,我收到了“demoapp.Appointment.host\u email”指的是“email”字段,它不是“demoapp.host”模型的本地字段。标题中提到的错误。为什么我会这样,我怎样才能修复它,还有更好的方法吗

我试图为一个简单的访问者管理系统创建一个数据库模式,通过扩展Django中内置的用户模型,我创建了两个名为Visitor和Host的模型。约会模型用于将访客和主持人之间的关系与其会议时间段进行映射。但是,当我运行
python manage.py makemigrations时,我收到了
“demoapp.Appointment.host\u email”指的是“email”字段,它不是“demoapp.host”模型的本地字段。
标题中提到的错误。为什么我会这样,我怎样才能修复它,还有更好的方法吗

来自django.db导入模型的

从django.contrib.auth.models导入用户
从django.utils导入时区
从django.core.validators导入RegexValidator
类主机(用户):
类元:
详细名称=“主机”
详细名称
phone=models.CharField(verbose_name='phone Number',max_length=10,validators=[RegexValidator(regex='[0-9]{10}')],unique=True,null=True)
类访问者(用户):
类元:
详细名称=“访问者”
详细名称复数=“访客”
phone=models.CharField(verbose_name='phone Number',max_length=10,validators=[RegexValidator(regex='[0-9]{10}')],unique=True,null=True)
purpose=models.CharField(verbose_name='purpose of meeting',max_length=150,null=True)
班级预约(models.Model):
host\u email=models.ForeignKey(主机,至\u field='email',在\u delete=models.CASCADE上,详细\u name='host email')
访问者\u email=models.ForeignKey(访问者,至\u field='email',在\u delete=models.CASCADE上,详细的\u name='visitor email')
slot=models.DateField(verbose_name='Appointment slot',默认值=timezone.now)
is_confirm=models.BooleanField(verbose_name='Booking confirm',默认值=False)

为什么要在外键中指定
到_字段
?我想你可能误用了。您可能只想关闭该选项,让Django使用主机的主键(id)

如果您确实想使用它,您需要您的型号的
主机的
email
属性。这就是错误告诉你的。如果要将其用作
外键的字段,还需要使其唯一

来自django.db导入模型的

从django.contrib.auth.models导入用户
从django.utils导入时区
从django.core.validators导入RegexValidator
类主机(用户):
类元:
详细名称=“主机”
详细名称
phone=models.CharField(verbose_name='phone Number',max_length=10,validators=[RegexValidator(regex='[0-9]{10}')],unique=True,null=True)
email=models.EmailField(unique=True)#您缺少这个
类访问者(用户):
类元:
详细名称=“访问者”
详细名称复数=“访客”
phone=models.CharField(verbose_name='phone Number',max_length=10,validators=[RegexValidator(regex='[0-9]{10}')],unique=True,null=True)
purpose=models.CharField(verbose_name='purpose of meeting',max_length=150,null=True)
班级预约(models.Model):
host\u email=models.ForeignKey(主机,至\u field='email',在\u delete=models.CASCADE上,详细\u name='host email')
访问者\u email=models.ForeignKey(访问者,至\u field='email',在\u delete=models.CASCADE上,详细的\u name='visitor email')
slot=models.DateField(verbose_name='Appointment slot',默认值=timezone.now)
is_confirm=models.BooleanField(verbose_name='Booking confirm',默认值=False)

您是否在安装的应用程序中注册了您的型号?是的,他注册了。否则不会出现此错误:)