Verileri depolamak için MongoDB ve MongoEngine kullanan bir Django uygulaması yapıyorum. Sorunumun basitleştirilmiş bir sürümünü sunmak için iki sınıfım olmasını istiyorum: Kullanıcı ve Sayfa. Her sayfa bir kullanıcı ve her kullanıcıyla bir sayfa ilişkilendirmelidir. MongoEngine'de İki Yönlü İlişkiler Uygulaması
from mongoengine import *
class Page(Document):
pass
class User(Document):
name = StringField()
page = ReferenceField(Page)
class Page(Document):
content = StringField()
user = ReferenceField(User)
(yani sayfayı unutmayın. Ben dairesel bağımlılıkları işlemek için Pythonictir yol Eksik varsa, bana bildirin. Kullanıcı daha önce tanımlanmış olmalıdır) Her doküman oluşturulur ve sadece iyi kurtardı ama bir bir Sayfayı atama olabilir Kullanıcı bir hata atar.
u = User(name='Jeff')
u.save()
p = Page(content="I'm a page!")
p.save()
p.user = u
p.save()
u.page = p
u.save()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build\bdist.win32\egg\mongoengine\document.py", line 71, in save
File "build\bdist.win32\egg\mongoengine\base.py", line 303, in validate
mongoengine.base.ValidationError: Invalid value for field of type "ReferenceField"
herkes bu istisnası atılır neden, yanlış yapıyorum ve bunu önlemek nasıl açıklayabilir misiniz?
from mongoengine import *
class User(Document):
name = StringField()
page = ReferenceField('Page')
class Page(Document):
content = StringField()
user = ReferenceField(User)
Kullanım tek tırnak ('Sayfa') henüz tanımlanmamış sınıfları göstermek için:
Gördüğünüz bir hata, yazar adında bir alan tanımladığınız ve kullanıcı adı verilen bir alanı ayarladığınızdır. Yayınlanan kod gerçekten kaçtırdınız mı? – Ian
Evet, maalesef bu benim sorunumun kaynağı değildi. Bu hatayı yapmak benim nesnelere bir değişken ekleyecekti ama MongoEngine save() işlevini etkilemezdi. –