【问题标题】:Add a function as a field to a model in Django/Python在 Django/Python 中将函数作为字段添加到模型中
【发布时间】:2012-11-15 21:10:10
【问题描述】:

模型

class A(SiteAwareModel):

    name = models.CharField(max_length = 255, blank = False)
    description = models.TextField(blank = True, null = True)

    class Meta:
        def key_count(self):
            return B.objects.count(self)

管理员

class AAdmin(admin.ModelAdmin):
    list_display = ('key_count')
    list_filter = ('key_count')

admin.site.register(A, AAdmin)

问题

我有一个模型 A,它有自己的字段(名称、描述)。此外,模型 A 使用模型 B(无外键关系)计算键数。

我想访问管理面板中的 key_count。我可以在管理员中看到一个列,意思是 list_display 有效,但是当我尝试在 list_filter 中使用它时,它会引发错误。

'AAdmin.list_filter1' 指的是 'key_count',它不引用字段。

最终结果

我想制作一个显示 key_count > 10 的过滤器

我做了什么(没有成功)

我已经尝试在 THIS 博客文章的帮助下通过经理进行此操作

我不想要的

我不想通过编写新的迁移来改变我的模型。

【问题讨论】:

  • 这个问题只针对django 1.3?如果“没有外键关系”,A和B之间的关系是什么?你能显示“B”字段吗?
  • 我正在使用 django 1.3.4 来具体说明。 2张桌子没有FK关系。 B 包含一些常见的字段,比如 name(CharField) 和 type(IntegerField)

标签: django-models python-2.7 django-admin django-1.3 django-admin-filters


【解决方案1】:

您可以尝试为您的目的创建一个自定义字段类https://docs.djangoproject.com/en/dev/howto/custom-model-fields/

如果你不想编写迁移,让南来做吧^^

http://south.aeracode.org/

祝你好运!

【讨论】:

    猜你喜欢
    • 2018-11-01
    • 1970-01-01
    • 2011-06-07
    • 2018-05-25
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 2020-04-20
    • 2014-04-02
    相关资源
    最近更新 更多