هل هناك طريقة سهلة لتغيير الأصل من سجل في google app engine datstore

StackOverflow https://stackoverflow.com/questions/808476

سؤال

نظرا

class Category(db.Model):
   name = db.Stringproperty()

قلت متداخلة الهرمي

-root
 |-a
 | |-b
 |   |-c
 |-x
   |-y
     |-z1
     |-z2

حيث a's الوالدين root, b's الوالدين a, c's الوالدين b الخ.

هناك طريقة بسيطة التي لا يمكن أن تتحرك عقدة y من x إلى b مثل أن z1 و z2 يظل الأطفال من y:

-root
 |-a
 | |-b
 |   |-c
 |   |-y
 |     |-z1
 |     |-z2
 |-x

هذا يعني ببساطة تغيير y's الأم.

ومع ذلك ، إذا كان ذلك غير ممكن مما يتطلب

  1. إنشاء سجل جديد ny = Category(parent=b, name=y) و
  2. بشكل متكرر لكل طفل من y إنشاء سجل جديد له ny كأحد الوالدين ،
  3. من حذف y و الأطفال.
هل كانت مفيدة؟

المحلول

الأصل في العلاقة هو المشفرة في الكيان مفتاح و المفتاح هو غير قابل للتغيير خلقت مرة واحدة, لذلك لا يمكنك تغيير مفتاح القائمة الكيان.من أجل القيام بذلك تحتاج إلى إعادة إدراج كافة البنود ذات الصلة مع مفاتيح جديدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top