python—django24
OneToOneField(to)有一个必填的参数,to表示要关联的表
models.py文件:新增一个用户详细信息表,关联之前的用户Users表
class Userdetail(models.Model):
username = models.OneToOneField(Users,on_delete=models.CASCADE,verbose_name='姓名')
tel = models.CharField(max_length=11,verbose_name='电话')
mial = models.CharField(max_length=20,verbose_name='邮箱')
city = models.CharField(max_length=11,verbose_name='居住地')
class Meta:
verbose_name_plural="用户详细信息"
verbose_name = "用户_个人资料"
inlines关联显示
为了让 userdetail 里面信息和users的信息在一个页面上展示,这里需用到 inlines 参数,关联过去。
先写一个MoreInfo类,继承了admin.StackedInline
StackedInline是让关联的字段纵向显示,TabularInline是横线显示。
admin.py文件内容
class MoreInfo(admin.StackedInline):
model = models.Userdetail
#然后修改原来的controusers
class ControUsers(admin.ModelAdmin):
list_display=("name","age")
list_per_page=10
inlines=[MoreInfo]
admin.site.register(models.Users.ControUsers)
class MoreInfo(admin.TabularInline):
model = models.Userdetail
#然后修改原来的controusers
class ControUsers(admin.ModelAdmin):
list_display=("name","age")
list_per_page=10
inlines=[MoreInfo]
admin.site.register(models.Users.ControUsers)
如果想让userdetail中的字段能够显示在user中,可将admin.py的文件修改如下
class ControUsers(admin.ModelAdmin):
list_display=("name","age","userdetail_city")
list_per_page=10
inlines=[MoreInfo]
def userdetail_city(self,obj):
return obj.userdetail.city
admin.site.register(models.Users.ControUsers)