使用Django管理站点的MVT / MVC

时间:2013-11-14 17:29:17

标签: django django-admin

这些是我的模型的简单版本:

class Device(models.Model):
    name = models.CharField(max_length=100)

    def get_ips(self):
        return self.deviceip_set.all()

    def get_ips_string(self):
        return ', '.join('<a href="http://' + unicode(ip.ip) + '">' + unicode(ip.ip) + '</a>' for ip in self.get_ips())

class DeviceIP(models.Model):
    ip = models.GenericIPAddressField()
    device = models.ForeignKey(Device)

这是来自我的admin.py:

class DeviceAdmin(admin.ModelAdmin):
    list_display = ('__unicode__', 'get_ips_string')

admin.site.register(Device, DeviceAdmin)

从MVT / MVC的角度来看,应该在模型中定义get_ips_string()之类的方法,还是在它们实际生成HTML时更适合其他地方(如admin.py)?

如果我决定创建自己的模板而不是使用管理网站,那会对定义get_ips_string()等方法产生影响吗?

1 个答案:

答案 0 :(得分:0)

  1. 你打算在哪里使用这些方法?如果您仅在管理员中使用它们,则应将它们放入相应的ModelAdmin类并在fieldsfieldsetslist_display中引用。因此,ModelAdmin对应于视图层。
  2. 从模板的角度来看,这些函数只是只读模型字段。没有特殊的地位。
  3. <强> P上。 S。对于Django管理员自定义,您可能会发现django-grappellihttp://grappelliproject.com)或xadminhttp://demo.xadmin.io)鼓舞人心。