2011-10-20 19 views
19
In [1]: from editor.models import * 
In [4]: from subscriptions.models import * 
In [5]: template = StockTemplate.objects.create(name='Template 1') 
In [6]: template 
Out[6]: <StockTemplate: Template 1> 
In [7]: plan = SubscriptionPlan.objects.create(name='Bronze') 
In [8]: plan 
Out[8]: <SubscriptionPlan: Bronze> 
In [12]: plan.templates.add(template) 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 

/home/me/GitProjects/test_git/proj/<ipython console> in <module>() 

/home/me/GitProjects/test_git/django-trunk/django/db/models/fields/related.pyc in add(self, *objs) 
    498   if rel.through._meta.auto_created: 
    499    def add(self, *objs): 
--> 500     self._add_items(self.source_field_name, self.target_field_name, *objs) 
    501 
    502     # If this is a symmetrical m2m relation to self, add the mirror entry in the m2m table 


/home/me/GitProjects/test_git/django-trunk/django/db/models/fields/related.pyc in _add_items(self, source_field_name, target_field_name, *objs) 
    558       if not router.allow_relation(obj, self.instance): 
    559       raise ValueError('Cannot add "%r": instance is on database "%s", value is on database "%s"' % 
--> 560            (obj, self.instance._state.db, obj._state.db)) 
    561       new_ids.add(obj.pk) 
    562      elif isinstance(obj, Model): 

ValueError: Cannot add "<StockTemplate: Template 1>": instance is on database "default", value is on database "None" 

Modelleri üzerindedirValueError: * eklenemiyor: örneği veritabanı "varsayılan" olduğundan değer veritabanı "Yok"

6 class SubscriptionPlan(models.Model): 
    7  name = models.CharField(max_length=255) 
    8  templates = models.ManyToManyField(StockTemplate) 
    9  monthly_fee = models.IntegerField("Monthly Fee", max_length=16, default="0") 
10  modified = models.DateTimeField(auto_now=True, editable=False) 
11  created = models.DateTimeField(auto_now_add=True, editable=False) 
12 
13  def __unicode__(self): 
14   return "%s" % self.name 



18 class StockTemplate(IKImage): 
19  name = models.TextField() 
20  description = models.TextField(blank=True) 
21 
22  is_public = models.BooleanField(default=True) 
23 
24  html = models.FileField(upload_to='stock_templates/html/', \ 
25        help_text='The file that will be used to render.') 
26  #css = models.FileField(upload_to='stock_templates/css/', blank=True) 
27 
28  img = models.ImageField(upload_to='stock_templates/img/') 
29 
30  modified = models.DateTimeField(auto_now=True) 
31  created = models.DateTimeField(auto_now_add=True) 
32 
33  objects = StockTemplateManager() 
34 
35  class IKOptions: 
36   spec_module = 'editor.specs' 
37   cache_dir = 'stock_templates/img/specs/' 
38   image_field = 'img' 
39 
40  def __unicode__(self): 
41   return u"%s" % self.name 
42 
43  def get_absolute_url(self): 
44   return reverse('preview_stock', args=[self.id]) 

o StockTemplate bir IKImage olmasından ile ilgili bir şey var mı nesne?

cevap

43

Buradaki sorun daha önce eklemek yöntem hem nesneler için tasarruf çağrı ihtiyaç olduğunu:

template.save() 
plan.save() 
plan.templates.add(template) 
bunların hiçbiri bir kimliği yoksa nesneleri eğer Django planın bir şablon ekleyemezsiniz