연락처 사람을 표시하는 간단한 플러그인을 작성했지만 특정 페이지에서 일부 연락처를 제외해야합니다. 그래서 "structure_to_exclude"ManyToMany 관계를 사용하는 플러그인에 관련 모델을 추가했습니다. 내 문제는, 내가 변수를 가져올 때 항상 공백입니다.장고 CMS - 플러그인 manyToMany 변수 항상 빈
cms_plugins.py
class VMContactContactPlugin(CMSPluginBase):
module = 'VM Contact Plugin'
render_template = 'vm_contact/calendars/contacts_list.html'
model = VMContactCalendarPluginModel
name = _('VM Contact plugin')
def render(self, context, instance, placeholder):
print 'Instance : {0}'.format(instance)
inst = instance.structure_to_exclude.all()
print 'Instance.all() result : {0}'.format(inst)
structures = Structure.objects.exclude(contact=None).exclude(pk__in=instance.structure_to_exclude.all().values_list('id',flat=True))
context.update({
'structures': structures,
})
return context
plugin_pool.register_plugin(VMContactContactPlugin)
관련 모델
class VMContactCalendarPluginModel(CMSPlugin):
structure_to_exclude = models.ManyToManyField(
Structure,
verbose_name=_(u'Structures à exclure'),
)
의 구조 모델 (다형성!)
class Structure(PolymorphicModel):
contact = models.ForeignKey(Contact, blank=True, null=True)
members = models.ManyToManyField(Contact, blank=True, null=True, related_name='%(class)s_members')
title = models.CharField(max_length=50, default='Castor')
description = models.CharField(max_length=254, blank=True)
categories = CategoryManyToManyField('aldryn_categories.Category',
verbose_name=_('categories'),
blank=True)
calendars = models.ManyToManyField(Calendar, blank=True)
has_pages = models.BooleanField(default=True)
avatar = FilerFileField(null=True, blank=True,
on_delete=models.SET_NULL)
classcss = models.CharField(max_length=1, choices=CSS_CLASS, default='5')
order = models.PositiveSmallIntegerField(default=0)
class Meta:
ordering = ['order']
인쇄 결과 :
인스턴스 93
Instance.all() 결과 : []
아이디어가 있으십니까? 나는 인스턴스 var와 함께 문제가 아니었다는 것을 확인하기 위해 ID (93)로 플러그인 인스턴스를 검색하려고 시도했지만 아무 것도 변경하지 않았다 ... 안부, 로빈