如何在Django中使用数据库在应用程序之间交换数据?

5
我正在使用Django开发一个网站。我创建了两个应用程序:一个是用于客户注册并将其数据添加到数据库中的应用程序,另一个是用于用户访问和查看交互界面的应用程序。想法是使用第二个应用程序从数据库中获取客户端数据,并将其用于向用户显示某些信息。
我的问题是我不知道如何使第二个应用程序从数据库获取信息。我需要在第二个应用程序的model.py中创建与第一个应用程序相同的模型吗?或者我该如何让第二个应用程序使用Queryset从数据库检索数据?
我不知道是否需要说明我正在使用MySql数据库。
1个回答

11

您不需要两次定义相同的模型。实际上,由于多种原因,您不应该这样做,例如数据应该存储在数据库中的一个地方(表名根据应用程序名称和模型从迁移生成),以及您不应该重复编写代码(DRY)。

您应该在它们应该属于的应用程序中定义模型(这完全是一种设计决策)。迁移将为适当的应用程序创建。

然后,在第二个应用程序中,您只需从第一个应用程序导入要使用的模型并构造任何查询即可。例如:

app1/models.py

from django.db import models

class Node(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField()
    body = models.TextField(blank=True)

app2/views.py

from django.views.generic.detail import DetailView
from app1.models import Node

class NodeView(DetailView):
    model = Node
    template_name = 'app2/index.html'

谢谢,我不确定使用应用程序名称来获取模型是否是正确答案。 - Efraín

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接