用户模型的外键无法按预期工作

时间:2019-02-27 19:56:28

标签: python django foreign-keys

我有一个带有自定义用户模型的$lists = array( array( 'id' => 1, 'parent' => 0, 'name' => 'Menu 1', ), array( 'id' => 2, 'parent' => 1, 'name' => 'Menu 2', ), array( 'id' => 3, 'parent' => 2, 'name' => 'Menu 3', ), array( 'id' => 4, 'parent' => 1, 'name' => 'Menu 4', ), array( 'id' => 4, 'parent' => 0, 'name' => 'Menu 5', ) ); ?> <ul> <li><a>My List</a> <ul> <?php foreach($lists as $key=>$list) { ?> <li><a><?= $list['name']; ?></a></li> <?php } ?> </ul> </li> 项目。

我有这个django模型,该模型使用自定义用户模型作为其外键。

Subscriptions

但是,如果我尝试使用class Subscriptions(models.Model): user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE) app_subscriptions = models.CharField(max_length=100) def __str__(self): return self.app_subscriptions 撤消所有用户app_subscriptions,它将始终返回以下错误:

..app_subscriptions_set.all()

我在这里使用的是相同类型的模型:

AttributeError: 'CustomUser' object has no attribute 'app_subscriptions_set'

在这种模式下,我可以使用from django.db import models class Software(models.Model): name = models.CharField(max_length=50) def __str__(self): return self.name class Version(models.Model): version = models.CharField(max_length=50) software = models.ForeignKey(Software, on_delete=models.CASCADE) def __str__(self): return self.version 查询所有软件版本。

有人有什么想法吗?预先谢谢你。

1 个答案:

答案 0 :(得分:0)

尝试使用user_instance.subscriptions_set.all()代替.app_subscriptions_set.all()

默认的accesor是型号名称,全部为小写字母,并附加_set。参见docsthis question

您的模型Version就是这样:

software_instance.version_set.all()