【发布时间】:2014-12-10 17:28:28
【问题描述】:
我正在尝试创建自定义占位符以在网站上添加管理员可编辑的部分。 Django-cms' documentation 非常笼统地说明了添加它需要做什么。
占位符位于一个单独的应用程序中,名为 contacts,已添加到 settings.py 文件中
这是我到目前为止的代码(跳过导入以减少冗长):
models.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"
views.py
def contacts(request):
# Load the the contacts from db
contactsfields = ContactsField.objects.all()
contacts_placeholder = ContactsPlaceholder.objects.all()
context = {"contactsfields" : contactsfields, "contacts_placeholder" : contacts_placeholder}
return render(request, "../templates/contacts.html", context)
def contacts_placeholder_detail(request, id): # is this really useful?
object = get_object_or_404(ContactsPlaceholder, id=id)
return render_to_response('../templates/contacts_placeholder_detail.html', {
'object': object,
}, context_instance=RequestContext(request))
contacts.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 %}
最后,admin.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)
使用此配置,运行后
python manage.py syncdb我确实在 html 响应中得到“占位符为空”,当然占位符不能使用标准前端编辑器进行编辑,这是所需的行为。
转到 127.0.0.1:8000/admin/ 我可以看到“联系人占位符”表,但是当我单击它或尝试添加项目时,我确实收到以下错误:
OperationalError at /us/admin/contacts/contactsplaceholder/
no such column: contacts_contactsplaceholder.phone
【问题讨论】:
-
你在运行syncdb后添加了电话栏吗?
-
@Paulo 我尝试运行syncdb,没有任何改变..
-
这就是我的意思,一旦你第一次运行 syncdb,django 就不会更新你的表。您必须手动或向南进行
-
@Paulo 这样做我现在终于可以在 /admin 上打开“联系人占位符”表,但即使我从那里添加一个条目,访问联系人页面时它仍然会显示“占位符为空” .我怀疑views.py中的代码现在是问题吗?
-
如果我正确理解您的问题.. 使用模板标签:来自 cms_tags 的 render_placeholder。 {% render_placeholder object.my_placeholder %}
标签: python django django-templates placeholder django-cms