Django开发如何从models.py读取字段值赋值到views.py变量
解决方案
你需要从cssEditor模型中读取配置记录后赋值给视图变量,全局样式配置通常只有1条记录,我们可以用get_or_create方法避免空数据报错,修改后的views.py代码如下:
from django.shortcuts import render from .models import cssEditor def index(request): # 读取主键为1的配置记录,不存在则自动创建默认记录 css_config, _ = cssEditor.objects.get_or_create(pk=1) linkcolor = css_config.link_color linkfont = css_config.link_font linkbc = css_config.link_bc return render(request, "SocialLinks/index.html", { "linkcolor": linkcolor, "linkfont": linkfont, "linkbc": linkbc })
额外优化建议
- 修正模型字段默认值格式
你当前models.py中link_color字段的默认值没有带#,会导致前端无法正常识别颜色,建议修改:
# 修改前 link_color = models.CharField(max_length=7, default="000000") # 修改后 link_color = models.CharField(max_length=7, default="#000000")
- 限制后台仅保留1条配置
避免后台新增多条冗余配置,修改admin.py代码,限制新增权限,同时修正类名重复问题(原admin类名和模型名重名会导致命名冲突):
from django.contrib import admin from SocialLinks.forms import cssForm from SocialLinks.models import cssEditor @admin.register(cssEditor) class cssEditorAdmin(admin.ModelAdmin): form = cssForm # 已有配置记录时禁止新增 def has_add_permission(self, request): return not cssEditor.objects.exists()
内容的提问来源于stack exchange,提问作者cr_untilted
相关产品推荐
相关产品推荐

