Django models 如何修复'';遵循.s#u id';不是'的外键;用户'&引用;在这个模型中
我是Django框架的新手,我正在尝试构建以下系统,其中包含一个跟踪多个股票的用户,股票后面跟着多个人,我正在尝试使用中间类创建一个复合键,但我遇到了这个错误Django models 如何修复'';遵循.s#u id';不是'的外键;用户'&引用;在这个模型中,django-models,Django Models,我是Django框架的新手,我正在尝试构建以下系统,其中包含一个跟踪多个股票的用户,股票后面跟着多个人,我正在尝试使用中间类创建一个复合键,但我遇到了这个错误 类别库存(型号.型号): symbol=models.CharField(最大长度=12,主键=True,默认为“”) name=models.CharField(最大长度=64) top_rank=models.IntegerField(null=True) price=models.FloatField() change=model
类别库存(型号.型号):
symbol=models.CharField(最大长度=12,主键=True,默认为“”)
name=models.CharField(最大长度=64)
top_rank=models.IntegerField(null=True)
price=models.FloatField()
change=models.FloatField(null=True)
change_percent=models.FloatField()
market_cap=models.FloatField(空=真)
primary_exchange=models.CharField(null=True,max_length=32)#NASDAQ
followers=models.ManyToManyField('myapp.Users',through='Follow',through_fields=('u_id','s_id'))
类用户(models.Model):
user\u id=models.IntegerField(主键=True,默认为“”)
name=models.CharField(最大长度=12)
课程遵循(models.Model):
u_id=models.ForeignKey('Users',on_delete=models.CASCADE)
s_id=models.ForeignKey('Stock',on_delete=models.CASCADE)
程序的顺序不正确。按照文件规定:
通过_fields
接受一个2元组('field1','field2')
,其中field1
是模型的外键名称ManyToManyField
在上定义(…),而field2
是目标模型的外键名称(…)
这意味着到_fields
的第一项应该是的_id'
,因为这指的是股票
模型,您在其中定义了ManyToManyField
,第二项应该是'u id'
:
class Stock(models.Model):
# …
followers = models.ManyToManyField(
'myapp.Users',
through='Follow',
through_fields=('s_id','u_id')
)
请注意,型号通常有一个单数名称,因此,User
,而不是Users
的顺序不正确。按照文件规定:
通过_fields
接受一个2元组('field1','field2')
,其中field1
是模型的外键名称ManyToManyField
在上定义(…),而field2
是目标模型的外键名称(…)
这意味着到_fields
的第一项应该是的_id'
,因为这指的是股票
模型,您在其中定义了ManyToManyField
,第二项应该是'u id'
:
class Stock(models.Model):
# …
followers = models.ManyToManyField(
'myapp.Users',
through='Follow',
through_fields=('s_id','u_id')
)
请注意,模型通常有一个单数名称,因此
用户
,而不是用户
,通过
字段应该是('u\u id','s\u id')
,但通常不会添加后缀。通过
字段应该是('u\u id','s\u id')
,但通常不会添加后缀。
class Stock(models.Model):
symbol = models.CharField(max_length=12, primary_key=True)
name = models.CharField(max_length=64)
top_rank = models.IntegerField(null=True)
price = models.FloatField()
change = models.FloatField(null=True)
change_percent = models.FloatField()
market_cap = models.FloatField(null=True)
primary_exchange = models.CharField(null=True, max_length=32) # NASDAQ
followers = models.ManyToManyField('myapp.User')
class User(models.Model):
user_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=12)