我正在尝试创建一个自定义占位符来添加一个管理员可编辑的网站部分。Django-cms' documentation对于要添加它的操作非常通用。在
占位符位于一个名为联系人的单独应用程序中,该应用程序已经添加到设置.py文件
以下是我目前为止的代码(跳过导入以减少冗长):
模型.py
class ContactsPlaceholder(models.Model):
phone = models.CharField(max_length=100)
email = models.CharField(max_length=100)
address = models.TextField(max_length=700)
# your fields
my_placeholder = PlaceholderField('contacts_contactsplaceholder')
# your methods
def __unicode__(self):
return "Contacts Placeholder"
视图.py
^{pr2}$联系人.html
{% extends "base.html" %}
{% load cms_tags %}
{% block content %}
<div>
<h1>Contacts</h1>
{% placeholder "contacts_placeholder" or %}
<p>Placeholder is empty</p>
{% endplaceholder %}
</div>
{% endblock content %}
最后,管理员py
class ContactsPlaceholderAdmin(PlaceholderAdminMixin, admin.ModelAdmin):
# Editable fields
frontend_editable_fields = ("phone", "email", "address")
# Form fields order and sections
fieldsets = [
(None,{"fields" : ["phone", "email", "address"]})
]
admin.site.register(ContactsPlaceholder, ContactsPlaceholderAdmin)
有了这个配置,在运行
^{pr5}$之后,我会在html响应中得到“Placeholder is empty”,当然,使用标准的前端编辑器,占位符是不可编辑的,这是所需的行为。转到127.0.0.1:8000/admin/我可以看到“Contacts Placeholder”表,但是当我单击它或尝试添加项目时,确实会出现以下错误:
OperationalError at /us/admin/contacts/contactsplaceholder/
no such column: contacts_contactsplaceholder.phone
如果
contacts()
视图是通过app钩子呈现的,那么在模板中使用{% placeholder "contacts_placeholder" %}
将不起作用。在在通过AppHook连接到CMS的应用程序中使用占位符时,必须使用
{% static_placeholder "MyPlaceholder" %}
,而不是通常的{% Placeholder "MyPlaceholder" %}
如果你有一个应用或插件,你已经在其中创建了一个占位符字段,那么在你的模板中,你需要下面的标签
相关问题 更多 >
编程相关推荐