0

これらは私のモデルの単純なバージョンです:

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()定義場所に影響はありますか?

4

1 に答える 1

0
  1. これらのメソッドをどこで使用しますか? admin でのみ使用する場合は、対応するModelAdminクラスに配置しfields、 、fieldsets、またはで参照するのが適切list_displayです。つまり、ModelAdminView レイヤーに対応します。
  2. テンプレートから見ると、これらの関数は読み取り専用のモデル フィールドにすぎません。特別なステータスはありません。

PSdjango-grappelli Django の管理者のカスタマイズについては、 ( http://grappelliproject.com ) またはxadmin( http://demo.xadmin.io ) 刺激的なものを見つけることができます。

于 2013-11-14T17:46:01.833 に答える