Python Django模型不会使用OneToOne字段进行迁移
当我尝试使用Python Django模型不会使用OneToOne字段进行迁移,python,django,model,migration,relationship,Python,Django,Model,Migration,Relationship,当我尝试使用python manage.py migrate运行migrate我的新模型时,出现以下错误: AssertionError:OneToOneField()无效。ForeignKey的第一个参数必须是模型、模型名称或字符串“self” 这是我的型号.py: class Server_DefaultChannel(): channel_id = models.BigIntegerField(default=0) name = models.CharFie
python manage.py migrate
运行migrate我的新模型时,出现以下错误:
AssertionError:OneToOneField()无效。ForeignKey的第一个参数必须是模型、模型名称或字符串“self”
这是我的型号.py
:
class Server_DefaultChannel():
channel_id = models.BigIntegerField(default=0)
name = models.CharField(default='undefined', max_length=32)
channel_type = models.IntegerField(default='-1')
class Server_Inviter(models.Model):
avatar = models.CharField(default='undefined', max_length=64)
discriminator = models.IntegerField(default=0)
inviter_id = models.BigIntegerField(default=0)
username = models.CharField(default='undefined', max_length=32)
class Server_Guild(models.Model):
features = ArrayField(models.CharField(default = 'undefined', max_length = 64))
icon = models.CharField(default = 'undefined', max_length = 64)
guild_id = models.BigIntegerField(default=0)
name = models.CharField(default = 'undefined', max_length = 128)
splash = models.CharField(default = 'undefined', max_length = 64)
description = models.CharField(default = 'undefined', max_length = 256)
vanity_url = models.CharField(default = 'undefined', max_length = 128)
class Discord_Server(models.Model):
approximate_member_count = models.IntegerField(default=-1)
approximate_presence_count = models.IntegerField(default=-1)
server_defaultchannel = models.OneToOneField(Server_DefaultChannel, on_delete=models.PROTECT, null=True)
code = models.CharField(max_length=32)
server_guild = models.OneToOneField('migratefire.Server_Guild', on_delete=models.PROTECT, null=True)
server_inviter = models.OneToOneField('migratefire.Server_Inviter', on_delete=models.PROTECT, null=True)
server_tags = ArrayField(models.CharField(default='none', max_length=16))
last_checked = models.DateTimeField(default=0)`
我尝试将应用程序名称放在每个类的元字段中,我尝试使用字符串,但出现以下错误:
错误:
migratefire.Discord\u Server.Server\u defaultchannel:(fields.E300)字段定义了与模型“migratefire.Server\u defaultchannel”的关系,该模型未安装或是抽象的。
migratefire.Discord\u Server.Server\u defaultchannel:(fields.E307)声明migratefire.Discord\u Server.Server\u defaultchannel字段时使用了对“migratefire.Server\u defaultchannel”的惰性引用,但应用程序“migratefire”不提供模型“Server\u defaultchannel”
请帮忙,我不知道为什么其他代码示例可以工作,而不是我的 我解决了自己的问题,我似乎忘记了传递
服务器\u DefaultChannel
类声明中的models.Model
参数:
class Server_DefaultChannel(models.Model):
channel_id = models.BigIntegerField(default=0)
name = models.CharField(default='undefined', max_length=32)
channel_type = models.IntegerField(default='-1')
导致了成功的迁移