(Django 1.10。)我试图遵循this关于使用OneToOneField扩展用户模型的建议。在我的应用程序投票中#39; (是的,我正在扩展在官方教程中制作的应用程序)我想存储关于每个用户的另外两条信息,即一串字符和一个数字。
在我的models.py中,我现在有以下内容:
from django.contrib.auth.models import User
class Employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
stopien = models.CharField(max_length=100)
pensum = models.IntegerField()
以及admin.py中的以下内容:
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
from polls.models import Employee
class EmployeeInline(admin.StackedInline):
model = Employee
can_delete = False
verbose_name_plural = 'employee'
class UserAdmin(BaseUserAdmin):
inlines = (EmployeeInline, )
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
使用管理面板添加用户时,我的两个新字段正确显示。但是,当我点击“保存”时,或者如果我没有添加任何用户,只需在管理面板中点击我唯一管理员用户的名称,我就会收到以下错误:
OperationalError at /admin/auth/user/1/change/
no such table: polls_employee
我看到一些与类似问题相关的问题和答案,但它们似乎与旧版本的Django相关。任何人都可以给我一个关于我应该做什么的提示吗?理想情况下,我希望在管理面板中显示我的两个附加字段,但我怀疑这可能是未来的任务。
我必须承认我不理解我在使用的建议后的文档中的这一段:
这些配置文件模型在任何方面都不是特别的 - 它们只是恰好与User模型具有一对一链接的Django模型。因此,在创建用户时不会自动创建它们,但可以使用 django.db.models.signals.post_save 来创建或更新相关模型。 < / p>
我是否需要将这个&#39; post-save&#39;管理面板的某些元素?
我非常感谢任何帮助!
答案 0 :(得分:3)
您需要运行makemigrations
为新模型创建迁移,然后migrate
运行迁移并创建数据库表。
./manage.py makemigrations
./manage.py migrate