在Django中创建多选选项时,似乎有两种不同的选择方式-选项a或选项b,请参见下文。每种选择相对于其他都有哪些优势。一个人通常比另一个人好吗?我是否缺少更好的方法?
选项a
<#assign image = "http://10.1.160.59:8082/geoserver/www/project/images/photo/img_"+feature["site"].value+"_"+feature["drillholes"].value+".jpg">
<#if image?has_content>
<tr><td>${"image"}</td> <td><img src=${"http://10.1.160.59:8082/geoserver/www/project/images/photo/img_"}${feature["site"].value}${"_"}${feature["drillholes"].value}${".jpg"} height="200" width="250" style="border-width:1;border-style:solid"/> </td></tr>
</#if>
<#if !image?has_content>
<tr><td>${"image"}</td> <td><img src=${"http://10.1.160.59:8082/geoserver/www/project/images/photo/No_Image.jpg"} height="200" width="250" style="border-width:1;border-style:solid"/> </td></tr>
</#if>
选项b
TYPE_CHOICES=(
('teacher', ("Teacher")),
('student', ("Student")),
)
user_type = models.CharField(max_length=20, default='student', choices=TYPE_CHOICES)
答案 0 :(得分:3)
在过去,内存和存储的每个字节都很宝贵,将这些选择存储为小整数是有意义的,但是现在它没有任何实质性的好处。将其存储为字符串可使代码更具可读性,使数据库更易于管理且更易于迁移。因此,除非您真正关心存储成本的微小差异,否则我建议使用字符串作为选项值。
答案 1 :(得分:3)
我可以建议您选择第三种方法,它虽然不需要太多工作,但可以使代码更易读,并且避免以后进行文本比较。
定义一个枚举
class UserTypeEnum(enum.Enum):
"""Define enums for user type"""
TEACHER = 0
STUDENT = 1
在模型中
class Employee(models.Model)
user_type = models.IntegerField(choices=UserTypeEnum.choices(),
default=UserTypeEnum.TEACHER)
然后您可以进行
之类的检查if user_type == UserTypeEnum.TEACHER:
...