1

私のhtmlテンプレートでは、小さな正方形のpngまたはfont-awesomeのアイコンを使用できます。

<a href="#"><i class="icon-search"></i>Search</a> // using font-awesome
// or
<a href="#"><img src="images/icons/search.png">Search</a> // using images

テンプレート top-menu.html では、次のものを使用できるようにする必要があります。

{{ child.menu_icon_font_awesome }} # in place of "icon-search"
{{ child.menu_icon_image }} # in place of "images/icons/search.png"

メニューの子メニュー ノードにこれらの変数をどのように取得しますか?

また、フィールドセットを admin.py で動作させるにはどうすればよいですか (それほど重要ではありません)。

私の menu_icons アプリは次のようになります。

# models.py

from django.db import models
from django.utils.translation import ugettext_lazy as _
from cms.models.pagemodel import Page
from django.core.files.storage import FileSystemStorage

class OverwriteStorage(FileSystemStorage):
  """
    Deletes file of same name if exists.
  """
  def _save(self, name, content):
    if self.exists(name):
      self.delete(name)
    return super(OverwriteStorage, self)._save(name, content)

  def get_available_name(self, name):
    return name

class MenuIconFontAwesome(models.Model):
  """
    Defines Font Awesome Menu Icon
  """
  page = models.ForeignKey(Page,
                           unique=True,
                           verbose_name=_("Page"),
                           editable=False)
  menu_icon_font_awesome = models.CharField(max_length=48,
                                            verbose_name="Font Awesome Menu Icon",
                                            blank=True)

class MenuIconImage(models.Model):
  """
    Defines Image Menu Icon
  """
  page = models.ForeignKey(Page,
                           unique=True,
                           verbose_name=_("Page"),
                           editable=False)
  menu_icon_image = models.ImageField('Menu Icon Image',
                                      upload_to = 'menu_icons/',
                                      blank=True,null=True)


# admin.py
from models import MenuIconFontAwesome, MenuIconImage
from cms.admin.pageadmin import PageAdmin
from cms.models.pagemodel import Page
from django.contrib import admin

class MenuIconFontAwesomeAdmin(admin.TabularInline):
  """
    Adds field for Font Awesome Menu Icon
  """
  model = MenuIconFontAwesome
  fieldsets = (
    ('Menu Icon with Font Awesome', {
      'fields': ('menu_icon_font_awesome',),
    }),
  )

class MenuIconImageAdmin(admin.TabularInline):
  """
    Adds field for Image Menu Icon
  """
  model = MenuIconImage
  fieldsets = (
    ('Menu Icon with Uploaded Image', {
      'fields': ('menu_icon_image',),
    }),
  )

PageAdmin.inlines.append(MenuIconFontAwesomeAdmin)
PageAdmin.inlines.append(MenuIconImageAdmin)

admin.site.unregister(Page)
admin.site.register(Page, PageAdmin)


# views.py
# this is the part I cannot figure out

これは、ナビゲーション修飾子のヒントを使用した追加です。「型オブジェクト 'MenuIconFontAwesome' には属性 'menu_icon_font_awesome' がありません」というエラーが表示されます。

from menus.base import Modifier
from menus.menu_pool import menu_pool
from models import MenuIconFontAwesome, MenuIconImage

class MenuIconsMod(Modifier):
    """
    Add Menu Icons to the menu nodes
    """

    def modify(self, request, nodes, namespace, root_id, post_cut, breadcrumb):
        if post_cut:
            return nodes
        for node in nodes:
            node.menu_icon_font_awesome = MenuIconFontAwesome.menu_icon_font_awesome
            node.menu_icon_image = MenuIconImage.menu_icon_image
        return nodes

menu_pool.register_modifier(MenuIconsMod)

フィールドセットについて; 私が見ているのはhttp://imgur.com/ubSBeB3のようです。なぜこれらのフィールドセットがそれらの名前を取得するのか、それらをオーバーライドする方法を分類することはできません。

4

2 に答える 2

0

コメントは許されないので、ここでまとめてみます。

テンプレートに「許可した」コードを投稿できますか?私はあなたが何を意味するのか理解できません。

django adminを介して画像をアップロードする場合はmenu_image = models.ImageField(upload_to = '/images/')、models.pyファイルのクラスにを含める必要があります。それよりも、と言ってテンプレートに含める必要があります<img src="{{ object.menu_image.url }}" alt="menu_image_description" />。そしてadmin.pyよりも書く

from django.contrib import admin
from myproject.models import *

class MYModelNameAdmin(admin.ModelAdmin):

    list_display = ('name',)


admin.site.register(MuModelName, MyModelNameAdmin)

フォントとは何ですか?質問を編集して、これまでに使用していたテンプレート、admin.py、models.pyを含めることはできますか?

于 2013-03-21T11:09:24.267 に答える