Python Django字段错误无法解析关键字';是教职员吗
当我将trainer作为外键添加到订阅模型中,然后从管理面板访问订阅模型的任何记录时,会出现上述错误Python Django字段错误无法解析关键字';是教职员吗,python,django,django-models,Python,Django,Django Models,当我将trainer作为外键添加到订阅模型中,然后从管理面板访问订阅模型的任何记录时,会出现上述错误 Cannot resolve keyword 'is_staff' into field. Choices are: dob, experience, id,user, user_id 您以错误的方式引用嵌套关系 class Subscription(models.Model): client = models.OneToOneField(ClientProfile, on_delet
Cannot resolve keyword 'is_staff' into field. Choices are: dob, experience, id,user, user_id
您以错误的方式引用嵌套关系
class Subscription(models.Model):
client = models.OneToOneField(ClientProfile, on_delete=models.CASCADE)
trainer = models.ForeignKey(TrainerProfile, null=True, blank=True,
on_delete=models.SET_NULL, limit_choices_to={'is_staff': True})
plan = models.ForeignKey(Plan, on_delete=models.CASCADE)
transaction = models.OneToOneField(PaymentHistory, on_delete=models.CASCADE)
start_date = models.DateTimeField()
end_date = models.DateTimeField()
class TrainerProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
dob = models.DateField(null=True)
experience = models.PositiveIntegerField(default=0)
类订阅(models.Model):
#其他领域
trainer=型号。ForeignKey(TrainerProfile,null=True,blank=True,
on_delete=models.SET_NULL,
将选择限制为={'user\uu'is\u staff':True})
也就是说,它应该是
user\u is\u staff
而不是is\u staff
您试图访问的属性is\u staff
,该属性在TrainerProfile
模型中不存在is_staff
是User
的一个属性,您可以在TrainerProfile
模型的User
字段中引用该属性
要访问此属性,您需要“遍历”来自Subscription
->TrainerProfile
->User
的关系。Django允许您通过使用双下划线表示法来实现这一点,例如:某些\u fk\u字段\u fk\u字段属性
在您的示例中,您需要将trainer
上的limit\u choices\u更改为选项,以遍历与用户的关系,如下所示:
class Subscription(models.Model):
# other fields
trainer = models.ForeignKey(TrainerProfile, null=True, blank=True,
on_delete=models.SET_NULL,
limit_choices_to={'user__is_staff': True})
类订阅(models.Model):
client=models.OneToOneField(ClientProfile,on_delete=models.CASCADE)
trainer=型号。ForeignKey(TrainerProfile,null=True,blank=True,
在_delete=models.SET _NULL时,将_choices _限制为={'user u是_staff':True})
计划=模型.ForeignKey(计划,on_delete=模型.CASCADE)
事务=模型.OneToOneField(PaymentHistory,on_delete=模型.CASCADE)
开始日期=models.DateTimeField()
end_date=models.DateTimeField()
班级培训人员档案(models.Model):
user=models.OneToOneField(用户,on_delete=models.CASCADE)
dob=models.DateField(null=True)
experience=models.PositiveIntegerField(默认值=0)
添加您的列车员档案
型号
class Subscription(models.Model):
client = models.OneToOneField(ClientProfile, on_delete=models.CASCADE)
trainer = models.ForeignKey(TrainerProfile, null=True, blank=True,
on_delete=models.SET_NULL, limit_choices_to={'user__is_staff': True})
plan = models.ForeignKey(Plan, on_delete=models.CASCADE)
transaction = models.OneToOneField(PaymentHistory, on_delete=models.CASCADE)
start_date = models.DateTimeField()
end_date = models.DateTimeField()
class TrainerProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
dob = models.DateField(null=True)
experience = models.PositiveIntegerField(default=0)