【问题标题】:Select field for all models within a Django app为 Django 应用程序中的所有模型选择字段
【发布时间】:2015-05-29 05:49:21
【问题描述】:

我对 Django 很陌生。

我想为一些用户信息创建一个表单。根据用户信息的类型,字段应该改变...例如,用户的私人地址需要字段名称、街道、邮编和城市。但是如果他想把东西送到公司,可能会有更多的领域,比如部门或公司名称。

我想实现这样的东西,并在单独的应用程序中为每种输入创建一个额外的模型紧凑。

有没有办法在这个应用程序中获取一个包含所有可用模型列表的选择字段。


编辑

由于我还有一些问题,我在这里添加一个示例

文件:experiment/models.py

from django.db import models
from django.apps import apps
class BasicExperiment(models.Model):
    date_created = models.DateTimeField(editable=False)
    date_modified = models.DateTimeField(blank=True)
    label_app = apps.get_app('labels')
    label_types = apps.get_models(label_app)

文件:labels/models.py

from django.db import models
class SILAC(models.Model):
    lys0 = models.BooleanField('Lys-0', default=True)
    lys4 = models.BooleanField('Lys-4', default=None)
    lys8 = models.BooleanField('Lys-8', default=None)
    arg0 = models.BooleanField('Arg-0', default=True)
    arg6 = models.BooleanField('Arg-6', default=None)
    arg10 = models.BooleanField('Arg-10', default=None)
    class Meta:
        verbose_name = 'SILAC Labeling'

在 shell 中它按预期工作:

>>> from django.apps import apps
>>> app = apps.get_app('labels')
>>> for model in apps.get_models(app):
...     model._meta.verbose_name
... 
'SILAC Labeling'

在我的 models.py 中出现以下错误:

...
  File "/Users/madejung/Documents/django_dev/cfproteomics/experiments/models.py", line 5, in <module>
    class BasicExperiment(models.Model):
  File "/Users/madejung/Documents/django_dev/cfproteomics/experiments/models.py", line 10, in BasicExperiment
    label_app = apps.get_app('labels')
  File "/Library/Python/2.7/site-packages/django/apps/registry.py", line 370, in get_app
    "App '%s' doesn't have a models module." % app_label)
django.core.exceptions.ImproperlyConfigured: App 'labels' doesn't have a models module.

【问题讨论】:

标签: django


【解决方案1】:

你可以试试这个:

from django.db.models import get_app, get_models

app = get_app('my_application_name')
for model in get_models(app):
    # do something with the model

这里有更多信息Django get list of models in application

【讨论】:

  • 我现在正在测试你的代码,它在 shell 中工作正常......但是如果我从另一个应用程序将它复制粘贴到我的模型中,我会收到一条错误消息 django.core.exceptions.ImproperlyConfigured: App 'labels' doesn't have a models module. 所以我不能在我的模块中使用get_app,或者我必须设置一个相对路径?
  • mm 你能在这里写下你的项目结构和应用标签吗?
  • 我可能刚刚发现contenttypes 是我正在寻找的东西......因为我想要一个下拉菜单,我将创建哪个模型......
猜你喜欢
  • 2011-08-25
  • 2016-03-10
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 2021-10-21
  • 2011-01-19
  • 1970-01-01
  • 2017-04-19
相关资源
最近更新 更多