我有一个 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)
我的问题是远程应用程序在没有本地数据库的情况下无法反序列化。