Django models 如何修复'';遵循.s#u id';不是'的外键;用户'&引用;在这个模型中

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

我是Django框架的新手,我正在尝试构建以下系统,其中包含一个跟踪多个股票的用户,股票后面跟着多个人,我正在尝试使用中间类创建一个复合键,但我遇到了这个错误


类别库存(型号.型号):
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)