Skip to main content
 首页 » 编程设计

python之远程访问django模型

2025年05月04日8lori

我有一个 django 1.5 项目,在 apache 服务器上运行的 mysql 上使用 django 模型。

class Person(models.Model): 
    first_name = models.CharField(max_length=100) 
    last_name = models.CharField(max_length=100) 
    birthdate = models.DateField() 
 
class Book(models.Model): 
    name = models.CharField(max_length=100) 
    author = models.ForeignKey(Person) 

我还有一个 python/django 应用程序(使用 django 自定义命令)在必须使用这些模型的远程计算机上运行。

  • 远程应用程序与服务器共享相同的模型定义
  • 远程应用需要模型的只读权限
  • 远程应用程序不能拥有服务器数据库的完整转储,因为服务器必须返回基于用户权限的查询集
  • 远程应用程序只能通过 http 连接到服务器
  • 服务器可以通过 REST API (json) 公开模型

是否有任何通过 http 传输模型的自动化方法?我尝试使用 django.core.serializers 但我遇到了以下问题:

  • 我无法序列化查询集中的相关对象
  • 没有本地数据库,远程应用无法工作
  • 反序列化后远程应用在本地数据库中搜索相关对象(不存在)

编辑:

我设法像这样序列化模型:

books = Book.objects.prefetch_related('author').all() 
authors = [book.author for book in books] 
data = authors + list(books.all()) 
serialized_data = django.core.serializers.serialize("json", data) 

我的问题是如果没有本地数据库,远程应用程序无法反序列化。

请您参考如下方法:

不要认为您需要通过 http 传输模型。 只需要连接到服务器数据库。 在远程应用程序设置中选择数据库引擎(在你的例子中是 mysql),名称。 指定适当的用户和密码。 并输入有效的主机和代理(如果需要)。您的数据库服务器正在运行的服务器

至于用户。在服务器上创建一个对数据库具有只读权限的 mysql 用户。

这将使您能够为服务器和远程应用程序使用相同的数据库。