查询Django中的相关模型

时间:2021-12-30 20:15:04

If I have:

如果我有:

class App(models.Model):
    app_name = models.CharField(...)

class Module(models.Model)
    module_name = models.CharField(...)

class config(models.Model)
    config_date    = models.DateTimeField()
    config_modules = ManyToManyField(Module)
    config_app     = models.ForeignKey(Application)

How do I get the apps that have a particular module?

如何获得具有特定模块的应用程序?

If m is a Module object. I know m.config_set.all() gives me all the configurations that have module m. And this:

如果m是一个模块对象。我知道。config_set.all()给我所有的配置模块m。

l = []
for conf in m.config_set.all():
    l.append(conf.config_app.app_name)

gives what I want, but is there a more terse syntax to achieve same?

给出我想要的,但是有更简洁的语法来实现吗?

Thanks

谢谢

2 个解决方案

#1


1  

try it:

试一试:

Config.objects.filter(config_modules=m).values('config_app__app_name')

hope it help

希望它帮助

#2


0  

To obtain distinct apps:

获得不同的应用程序:

config.objects.filter(config_modules=m).distinct(
    'config_app').values('config_app__app_name')

#1


1  

try it:

试一试:

Config.objects.filter(config_modules=m).values('config_app__app_name')

hope it help

希望它帮助

#2


0  

To obtain distinct apps:

获得不同的应用程序:

config.objects.filter(config_modules=m).distinct(
    'config_app').values('config_app__app_name')