模型是武装的,因此与管理员一起工作将非常简单。第一步是创建一系列颜色,然后模拟投票。
组装绿色,红色和蓝色:
然后定义了投票,每个票都是用户唯一的:
,我立刻意识到某些东西被忽略了:颜色模型没有十六进制的价值。因此,如果您将“黑色”颜色放在一起,而不定义“#000”,则无法在屏幕上上色。 ð²
颜色迁移
原则上用空白默认值(#FFF)定义了字段,因为否则先前创建的记录不会具有分配的值。另一个选择是将字段定义为null,但这是没有意义的,因为每种颜色都必须具有十六进制的名称和价值:
hexa = models.CharField(max_length=7, default="#FFF")
另一方面,在 admin.py 中定义了一个类,以组装我想可视化的列,以获取名称和hexa的字段。
class ColorAdmin(admin.ModelAdmin):
list_display = ('name', 'hexa')
admin.site.register(Vote)
admin.site.register(Color, ColorAdmin)
结果给出:
定义HEXA值
我可以打开Photoshop,Paint或AlgíºN在线编辑器,选择一个并复制十六进制价值。但是我很懒惰,所以我决定做一些可以带我更多工作的事情:实施一本彩色小册子。
asã会发现django-colorfield。使用 pip 安装它后,修改我的模型:
from colorfield.fields import ColorField
(...)
hexa = ColorField(max_length=7, default="#FFF")
现在,例如,如果我想创建一种新颜色,我在django-admin中拥有这种美:
我现在可以在不离开管理员的情况下定义我想要的所有颜色。
在下一集中...
根据定义的颜色,我们可以投票一张。问题在于,API使我们可以向任何用户投票,这是一个巨大的安全差距。