2012-03-15 3 views
0

Изменение вопроса. Я хочу применить ManyToMany соотношение между db.Model и NDB. Пример Создание ссылки ManyToMany между db.Model и NDB

NDB модель

class my_NDB(search.SearchableModel): 
    ....... 
    ....... 

db модель

class Test(search.SearchableModel): 
    email = db.StringProperty() 
    created_by = db.IntegerProperty() 

Могу ли я применить ManyToMany отношения между этими моделями?

EDIT:

Вот мой User Модель

class User(model.Expando): 
    """Stores user authentication credentials or authorization ids.""" 

    #: The model used to ensure uniqueness. 
    unique_model = Unique 
    #: The model used to store tokens. 
    token_model = UserToken 

    created = model.DateTimeProperty(auto_now_add=True) 
    updated = model.DateTimeProperty(auto_now=True) 
    # ID for third party authentication, e.g. 'google:username'. UNIQUE. 
    auth_ids = model.StringProperty(repeated=True) 
    # Hashed password. Not required because third party authentication 
    # doesn't use password. 
    email = model.StringProperty(required=True) 
    is_active = model.BooleanProperty(required=True) 
    password = model.StringProperty() 

И вот мой Testdb модель

class Test(search.SearchableModel): 
    email = db.StringProperty() 
    created_by = db.IntegerProperty() 

Теперь я хочу, чтобы применить manyToMany на испытании. Является ли это возможным?

Джанго стиль ManyToMany

created_by = models.ManyToManyField(User) 
+0

Ваш вопрос действительно неясен. что вы имеете в виду, что вы применили ForeignKey между db и ndb ?? manytomany между db.Model и ndb ?? все это не имеет смысла. – aschmid00

+0

То же. Класс, полученный из SearchableModel, не может быть классом модели NDB, так как сам SearchableModel является классом модели db. Можете ли вы сделать шаг назад и описать, что должно делать ваше приложение? –

+0

@Guido van Rossum Спасибо за ответ. Я обновил свой вопрос. – Kulbir

ответ

3

я вижу. Мне пришлось искать документы Django ManyToManyField. IIUC вы хотите, чтобы тест был создан несколькими пользователями, и, конечно, каждый пользователь может создавать несколько тестов. У меня есть это право?

Способ выполнения этого должен состоять в том, чтобы в классе Test был задан класс , так что в классе Test есть список ключей, где ключи указывают на объекты пользователя.

Теперь ваша модель пользователя является классом NDB, что немного усложняет ситуацию. Однако ключ класса NDB имеет API для преобразования и из БД ключей:

  • Если у вас есть Ndb ключ к, k.to_old_key() возвращает соответствующий db.Key.

  • Если у вас есть db Key k, ndb.Key.from_old_key(k) возвращает ndb.Key для него (это метод класса).

Надеюсь, это поможет. Удачи!

PS. Пожалуйста, обновите свой код, чтобы использовать from google.appengine.ext import ndb, чтобы вы могли написать ndb.Expando, ndb.StringProperty и т. Д.

 Смежные вопросы

  • Нет связанных вопросов^_^