如何在 django admin 中从反向关系添加 list_display 字段

发布于 2025-01-15 19:58:12 字数 1502 浏览 0 评论 0原文

我对 django 和管理模块还很陌生。我正在寻找一种添加管理类的方法 我通过反向关系查询的一些字段。

由于特定的功能,我目前可以检索有趣的字段并将它们放入一列中 使用 list_diplay,但我无法通过返回的查询对象创建 list_display 字段:

例如,现在我得到列:

|Inventory_id|   Mousqueton1 |
| 22         |    foo1,foo2  | 

并且我希望有这种输出,以轻松创建过滤器:

|Inventory_id|   Mousqueton1 |   Mousqueton2   |
| 22         |   foo1        |    foo2         |

这里是我当前的 models.py

class Kit(models.Model):
    inventory_id = models.CharField(max_length=20,unique=True)
    description = models.TextField(null=True)
    creation_date = models.DateField(auto_now_add=True)
    last_update = models.DateTimeField(auto_now=True)

class Mousquetons(models.Model):
    inventory_id = models.CharField(max_length=20,unique=True)
    serial = models.IntegerField(unique=False)
    description = models.TextField(null=True)
    creation_date = models.DateField(auto_now_add=True)
    last_update = models.DateTimeField(auto_now=True)
    kit = models.ForeignKey(Kit,on_delete=models.PROTECT,null=True)

admin.py

@admin.register(Kit)
class KitAdmin(admin.ModelAdmin):
    list_display= ['inventory_id','m']

    def get_queryset(self, obj):
        qs = super(KitAdmin, self).get_queryset(obj)
        return qs.prefetch_related('mousquetons_set')

    def m(self, obj):
        return list(obj.mousquetons_set.all())

也许我的数据建模不是执行此类操作的正确方法,任何建议都会很好。 谢谢 !

I'm pretty new to django and the admin module. I'm looking for a way to add on a admin class
some fields that i query through a reverse relationship.

I can currently retrieve the interesting fields and put them in one column thanks to a specific function
using list_diplay, but i cannot manage to create a list_display field BY returned query object:

as example, now I get as column:

|Inventory_id|   Mousqueton1 |
| 22         |    foo1,foo2  | 

and i would like to have this kind of output, to easily create filters:

|Inventory_id|   Mousqueton1 |   Mousqueton2   |
| 22         |   foo1        |    foo2         |

Here's my current models.py

class Kit(models.Model):
    inventory_id = models.CharField(max_length=20,unique=True)
    description = models.TextField(null=True)
    creation_date = models.DateField(auto_now_add=True)
    last_update = models.DateTimeField(auto_now=True)

class Mousquetons(models.Model):
    inventory_id = models.CharField(max_length=20,unique=True)
    serial = models.IntegerField(unique=False)
    description = models.TextField(null=True)
    creation_date = models.DateField(auto_now_add=True)
    last_update = models.DateTimeField(auto_now=True)
    kit = models.ForeignKey(Kit,on_delete=models.PROTECT,null=True)

and admin.py

@admin.register(Kit)
class KitAdmin(admin.ModelAdmin):
    list_display= ['inventory_id','m']

    def get_queryset(self, obj):
        qs = super(KitAdmin, self).get_queryset(obj)
        return qs.prefetch_related('mousquetons_set')

    def m(self, obj):
        return list(obj.mousquetons_set.all())

Maybe my data modeling is not the right way to perform this kind of operation, Any advice would be great.
Thanks !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文