通过 models.Model 创建了一个类别模型,以便您可以在管理面板中添加条目。模型本身(来自models.py):
class KSRentalCategory(models.Model):
name = models.CharField(max_length=250, default="", verbose_name="Название Категории")
slug = models.SlugField(max_length=250, default="", verbose_name="URL")
image = FilerImageField(null=True, blank=True, on_delete=models.CASCADE, related_name="image_ks_rental_category")
sort = models.IntegerField(default="0", verbose_name="Сортировка")
is_active = models.BooleanField(default="True", verbose_name="Активно?")
date_pub = models.DateField(auto_now_add=True, blank=True, verbose_name="Дата добавления")
date_upd = models.DateTimeField(auto_now_add=False, auto_now=True, verbose_name="Дата редактирования")
def __str__(self):
return self.name
class Meta:
verbose_name = 'Категория'
verbose_name_plural = 'Категории'
在前端,您需要通过插件显示所有踏板的类别列表,我创建了一个插件(来自 cms_plugins.py):
@plugin_pool.register_plugin
class KSRentalCategoryPlugin(CMSPluginBase):
module = _("Аренда")
name = _("Категории - блок для главной")
render_template = "ksrental/blocks/rental_category_grid.html"
model = KSRentalCategory
allow_children = False
def render(self, context, instance, placeholder):
context = super(KSRentalCategoryPlugin, self).render(context, instance, placeholder)
return context
它不是那样工作的,因为模型类不应该是models.Model,而是CMSPluginBase!假设我找到了如何为一堆创建附加模型:
class KSRentalPLG(CMSPlugin):
rental = models.ForeignKey(KSRentalCategory, on_delete=models.CASCADE, verbose_name="Аренда", null=True, blank=True)
def get_title(self):
return self.rental.name
def __str__(self):
return self.get_title()
并在插件中更改模型
model = KSRentalCategory
在
model = KSRentalPLG
但在这种情况下,插件提供从列表中选择一个类别,我需要获取所有类别。然后迭代和推断?我哪里做错了?
一般来说,我是这样做的():
那些。删除了模型的使用,用渲染函数中的所有模型对象替换了实例。我不知道这有多正确,但它对我有用。如果有人知道正确的解决方案,我想看看!