かなり標準的なエンティティ属性値の階層を実装する必要があります。各タイプには複数のタイプのデバイスがあり、それぞれのタイプにはさまざまな設定があり、個々のデバイスにはそれぞれの設定ごとに特定の値のセットがあります。 django-eavパッケージとeav-djangoパッケージの両方が保守されていないようですので、自分自身をロールバックする必要があります。しかし、どのように私はこれを設計するのですか?これまでのところ、私はこのようなことを考えています(多くの詳細をスキップします)DjangoでEAVを実装する方法
class DeviceType(Model): name = CharField() class Device(Model): name = CharField() type = ForeignKey(DeviceType) class Setting(Model): name = CharField() type = CharField(choices=(('Number', 'int'), ('String', 'str'), ('Boolean', 'bool'))) device_type = ForeignKey(DeviceType) class Value(Model): device = ForeignKey(Device) setting = ForeignKey(Setting) value = CharField() def __setattr__(self, name, value): if name == 'value': ... do validation based on the setting type ... def __getattr__(self, name): if name == 'value': ... convert string to whatever is the correct value for the type ...
私には何かが欠けていますか?これを行うより良い方法はありますか?これは使えますか?
まず、この質問が4月に尋ねられました。私は以来、質問に投稿したコードのバージョンを実装しました。それは私にとっては合理的にうまく動作しますが、むしろやや扱いやすい解決策をとることになります。第二に、あなたの答えは非常に一般的です。あなたもDjangoを知っていますか? –
万が一あなたがdjango-eavを使用しましたか?フィルタリングは私のために全く機能しません。 – iMitwe
@iMitweいいえ、私がこの答えを探したとき、Django-eavは水中でかなり死んでいたので、私は上記のコードに基づいて限定版を巻いた。 –