Я пытаюсь реализовать список foreignKeys в django-nonrel (я использую mongo как db).
Вот код:
# models.py
from django.db import models
from django_mongodb_engine.contrib import MongoDBManager
from djangotoolbox.fields import ListField
class FriendList(models.Model):
objects = MongoDBManager()
list = ListField(models.ForeignKey('AWUser'))
def add_friend(self, awuser):
# awuser must be an instance of AWUser - I removed tests for more clarity
self.list.append(awuser)
self.save()
class AWUser(models.Model):
objects = CustomUserManager()
user = EmbeddedModelField('User')
friends = EmbeddedModelField('FriendList')
Проблема в том, что когда я вызываю user.friends.add_friend (user1), у меня появляется ошибка «AttributeError: объект 'str' не имеет атрибута '_meta'».
Пример взлома (сделанный с использованием консоли оболочки ./manage):
$>user = AWUser.objects.all()[0]
$>user1 = AWUser.objects.all()[1]
$>user.friends.add_friend(user1)
#ask me if you need the complete error - I don't put it more more clarity
AttributeError: 'str' object has no attribute '_meta'
В основном мне нужно создавать списки друзей.
Пожалуйста, не стесняйтесь порекомендовать другой вариант, если вы считаете, что моя не подходит. :) Я бы хотел, чтобы моя реализация работала ...
Кроме того, я не поместил все переменные AWUser для большей ясности, но я могу добавить их, если необходимо.
Связанные зависимости проекта:
- django 1.3.1 (установлен как django-nonrel)
- django-mongodb-engine 0.4.0
- djangotoolbox == 0.9.2
- Пункт списка
- пимонго == 2.1.1
Спасибо за вашу помощь.
ОБНОВИТЬ:
Я попытался изменить код, как сказано в сообщении «ListField с ForeignField в django-nonrel ", но у меня все еще та же ошибка ...