unique_together
Django の機能を真似ようとしていますが、うまくいきません。
class MyClass(ndb.Model):
name = 'name'
surname = 'surname'
phone = 'phone'
def get_unique_key(self):
return self.name + "|" + self.surname + "|" + self.phone
「ええ、とても簡単です」
この投稿で受け入れられた回答によるとid
、obj コンストラクターでパラメーターを割り当てるだけで十分でした。しかし、私はそれをビューで処理したくありません。理想的には、私はこれを行います:
object = MyClass()
object = object.custom_populating_method(form.cleaned_data)
object.id = object.get_unique_key()
object.put()
または、それを に配置して、_pre_put_hook
保存id
する前に が最後に設定されるようにします (また、データストア全体でデータの一意性を強制するチェックを行うこともできます)。
どうやら、私は間違っていた。これを実現する唯一の方法は、ビューをハッキングすることです。
unique_id = "|" + form.cleaned_data['bla'] + "|" + form.cleaned_data ...
object = MyClass(id=unique_id)
これはひどく完全に間違っています (モデルの要件に対するすべての変更は、ビューでも検査する必要があるため)。さらに、関連するデータを取得するために、いくつかの醜い呼び出しを行うことになります。おそらく、この問題に時間を費やしすぎて出口を見つけることができませんでした。ここで明らかな何かが欠けていることを本当に願っていますが、この主題に関する良い例や適切なドキュメントを実際に見つけることができません。誰か似たようなヒントや経験がありますか?
tl;dr : ビューに不要なコードを追加せずにこれを実現する良い方法はありますか?
(私はデータストアでDjangoとndbのモデルを「使用しています」)
ありがとう