Apacheサーバーで実行されているmysql上でdjangoモデルを使用するdjango 1.5プロジェクトがあります。
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)
私の問題は、ローカル データベースがないとリモート アプリケーションがデシリアライズできないことです。