【发布时间】:2018-10-27 15:38:39
【问题描述】:
在我的 django rest 项目中,我创建了总共 5 个应用程序,这些应用程序具有相应的模型以及它们自己的序列化程序(身份验证(-> 配置文件)、crc(-> 卡、责任、协作者)、项目(-> 项目)、场景(- > 场景)和任务(-> 任务))。模型之间也有关联,例如
class Project(models.Model):
stakeholders = models.ManyToManyField(User, blank=True)
class Profile(models.Model):
user = models.OneToOneField(User, blank=True, on_delete=models.CASCADE, )
class Scenario(models.Model):
stakeholder = models.ForeignKey(User, related_name='scenarios', blank=True,)
project = models.ForeignKey(Project, related_name='project_scenarios',)
tasks = models.ManyToManyField('tasks.Task', blank=True)
class Task(models.Model):
stakeholder = models.ForeignKey(User, related_name='tasks', blank=True, )
project = models.ForeignKey(Project, related_name='project_tasks' )
我想列出我写过的所有模型及其对应的方法。我试过了
import django.apps
print(django.apps.apps.get_models())
但这列出了它知道的所有类:
[<class 'django.contrib.admin.models.LogEntry'>,
<class 'django.contrib.auth.models.Permission'>,
<class 'django.contrib.auth.models.Group'>,
<class 'django.contrib.auth.models.User'>,
<class 'django.contrib.contenttypes.models.ContentType'>,
<class 'django.contrib.sessions.models.Session'>,
<class 'rest_framework.authtoken.models.Token'>,
<class 'django.contrib.sites.models.Site'>,
<class 'allauth.account.models.EmailAddress'>,
<class 'allauth.account.models.EmailConfirmation'>,
<class 'authentication.models.Profile'>,
<class 'project.models.Project'>,
<class 'tasks.models.Task'>,
<class 'scenarios.models.Scenario'>,
<class 'crc.models.Card'>,
<class 'crc.models.Responsibility'>,
<class 'crc.models.Collaborator'>]
我怎样才能只检索那些模型及其对应的方法?
更新:
我尝试了类似的方法:
@api_view(['GET'])
def class_list(request):
my_apps=['authentication', 'crc', 'moel_views', 'project', 'scenarios', 'tasks']
my_app_models = {name: apps.all_models[name] for name in my_apps}
return Response(my_app_models)
但它会抛出 class not JSON serializable 错误
【问题讨论】:
-
可能的重复 [在 Django 中获取自己的应用程序] (stackoverflow.com/questions/50387619/…)
-
感谢指出!
-
但是他们只返回应用程序而不是模型
标签: django django-rest-framework