我正在更新一个系统,并借此机会修改了一些东西,但希望保留旧的用户表中的一些字段。我已经在新项目中建立了一个概要文件,并希望通过一对一的关系将它链接到遗留用户表,主要是为了利用链接到旧uid的内容。
我在models.py
中有以下内容:
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
first_name = models.CharField(max_length=20, help_text='Enter your first name.', blank=False)
last_name = models.CharField(max_length=20, help_text='Enter your last name.', blank=False)
class LegacyUser(models.Model):
legacy_id = models.CharField(max_length=10, null=False)
legacy_email = models.CharField(max_length=50, blank=True, null=True)
legacy_current_user = models.OneToOneField(Profile, null=True, on_delete=models.PROTECT)
字符串
在admin.py
中,我有:
from django.contrib import admin
from .models import Profile, LegacyUser
# Register your models here.
class LegacyAdmin(admin.StackedInline):
model = LegacyUser
@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
list_display = ['user', 'first_name','last_name']
raw_id_fields = ['user']
inlines = [ LegacyAdmin ]
型
现在,我可以在管理工具中看到遗留表,但看不出新旧表之间的关系。在理想的情况下,我希望能够放入一个遗留的uid,让它填充子表单其余部分的字段(用于健全性检查),并能够保存链接的配置文件。这可能吗?
1条答案
按热度按时间ibps3vxo1#
看看你的管理员,因为你唯一注册的是
Profile
,那么你试图添加或编辑Profile
,并看到可能的LegacyAdmin
的下拉列表,这似乎是你在这里的用例。如果你正在编辑
Profile
,那么我相信唯一的方法是在Profile
上声明OneToOneField
,而不是LegacyUser
。然后,您可以在Profile
添加/编辑管理页面中获得一个下拉列表,该列表将允许您选择并保存与Profile
相关的LegacyUser
。通过自定义LegacyUser
的__str__()
方法,您还可以在该下拉列表中显示所需的字段以进行健全性检查。