2016-04-04 13 views
0

Python 3Kullanım related_name QuerySet

Django 1.9

Django-CMS 3.2.2

Böyle bir şey var:

models.py

class PluginModel(CMSPlugin): 
    title = models.CharField(max_length=60) 

class InlineModel(models.Model): 
    title = models.CharField(max_length=60) 
    plugin_key = models.ForeignKey('PluginModel' related_name='breakpoints') 

cms_plugins.py

class InlineModelInline(admin.StackedInline): 
    model = InlineModel 

class PluginModelPlugin(CMSPluginBase): 
    model = PluginModel 
    inlines = [InlineModelInline,] 

    def render(self, context, instance, placeholder): 
     context = super(CarouselPlugin, self).render(context, instance, placeholder) 
     print(instance.breakpoints.all()) #for simple debug 

Birkaç satır ekledikten sonra kaydediyorum. Düzenlemede, tüm satır içi normal görünür, ancak sayfayı yayınlarsam, yalnızca boş bir liste döndürülür. Yayın sistemi hatası nedir anlıyorum, ama nasıl çalıştırabilirim?

+0

Doğru mı? context = süper (CarouselPlugin, self) '? –

+0

Bu komik, bu doğru ve yanlışlıkla orada sorunuza karşılık geldiğini size göstermek için belgelere aldım. – Atterratio

cevap

1

Böyle bir şey işe yaramalıdır. @ atterratio'nun cevabı sadece çoktan çoğa ilişkiler için çalışacaktır:

class PluginModel(CMSPlugin): 
    title = models.CharField(max_length=60) 

    def copy_relations(self, oldinstance): 
     for breakpoint in oldinstance.breakpoints.all(): 
      breakpoint.pk = None 
      breakpoint.plugin_key = self 
      breakpoint.save() 
+0

Bu kod dökümantasyondan değil, benim için işe yaramıyor, ama benim işim, ForeginKey kullanmamıza rağmen. Django'da bir değişiklik olabilir, en son kullanıyor muyum? – Atterratio

+0

M2M veya FK ilişkisini kullanıp kullanmadığına göre uygulamada varyasyon vardır. Sorunuzda bir FK kullanıyorsunuz, bu yüzden gönderdiğim snippet çalışması gerekir. – mishbah

+0

U'yu FK kullanıyorum ve U kodu benim için çalışmıyor, işim. – Atterratio