我正在尝试像菜单模型一样构建CMS。
所以在 MODELS.PY :
class MenuItem(models.Model):
class Meta():
db_table = "menu_item"
verbose_name = "Menu Item"
verbose_name_plural = "Menu Items"
menu_item_title = models.CharField(
verbose_name="Menu Item Custom URL title",
max_length=200,
blank=False,
null=False,
)
menu_item_type = models.ForeignKey(
MenuType,
related_name="menu_item_type_key",
blank=False,
null=False,
)
class MenuItemCustomUrl(models.Model):
class Meta():
db_table = "menu_item_custom_url"
verbose_name = "Menu Item Custom URL"
verbose_name_plural = "Menu Items Custom URL"
menu_item_custom_url = models.CharField(
verbose_name="URL address that points menu item",
max_length=200,
blank=False,
null=False,
)
menu_item_custom_url_menu_item = models.ForeignKey(
MenuItem,
unique=True,
on_delete=models.CASCADE,
related_name="menu_item_custom_url_menu_item_key",
blank=False,
null=False
)
VIEWS.PY :中的
def homepage(request):
args['menu_items'] = MenuItem.objects.filter(menu_item_menu=args['main_menu'])
return render(request, template_page, args)
和模板:
{% for menu_item in menu_items %}
<li>
<a href="#">
{{ menu_item }}
</a>
</li>
{% endfor %}
因此,正如您所看到的那样 menu_item 附加了 menu_item_custom_url ,我需要的是在menu_item循环中使用menu_item_custom_url值
注意:除了custopm_url类型,还有其他类型有自己的参数......
virtualenv,django = 1.11,python = 3.4,ubuntu = 14.04
答案 0 :(得分:1)
如果使用方法扩展模型以找到正确的子对象:
class MenuItem(models.Model):
def custom_url(self):
return self.menuitemcustomurl_set.first() # assume the first one is correct
...
然后您可以直接在模板中使用此方法
{{ menu_item.custom_url }}