报错:
TypeError: isinstance() arg 2 must be a type or tuple of types
from django.db import models
from django.contrib.auth.models import AbstractUser
from blog.models import Blog
class UserInfo(AbstractUser):
# identifier = models.CharField(max_length=40, unique=True) # USERNAME_FIELD = 'identifier' nid = models.AutoField(primary_key=True) # 手机号 telephone = models.CharField(max_length=32) # 用户头像 avatar = models.FileField(upload_to='avatar/', default='avatar/default.png') # # 用户创建时间 # create_date = models.DateTimeField(auto_now_add=True) # # 用户博客--一对一对应博客表 blog = models.OneToOneField(to=Blog, to_field='nid', on_delete=models.CASCADE, null=True)
blog app
from django.db import models # Create your models here. class Blog(models.Model): nid = models.AutoField(primary_key=True) # 博客名称 title = models.CharField(max_length=32) # 站点名称 site_name = models.CharField(max_length=32) # 博客主题样式 theme = models.CharField(max_length=32)
当需要关联的表 不在同一个py文件下时
blog = models.OneToOneField(to="Blog", to_field='nid', on_delete=models.CASCADE, null=True)
这种写法是错误的, 因为django 无法当做一个模块来导入。所以会因为找不到 而报错。
但是所有class都在同一个py文件下,可以用“Blog” 这种方式导入
加引号 默认在当前文件里面找,
假如Blog在本py文件内 可以to=Blog 但是Blog类要写在这个表上面UserInfo。