首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摇尾ModelAdmin内嵌?

摇尾ModelAdmin内嵌?
EN

Stack Overflow用户
提问于 2017-01-10 10:53:55
回答 2查看 1.1K关注 0票数 9

我正在使用摇尾服务的ModelAdmin模块(与Django ModelAdmin不同)将自定义的Order模型添加到摇尾管理中。此模型具有自定义Address模型的外键。

我想将Address模型显示为内联(如django的管理)在InspectView中(我已经启用了)。当前,它显示字符串表示形式。

EN

回答 2

Stack Overflow用户

发布于 2022-06-25 17:00:01

背景

您必须通过继承ModelAdmin类来创建类,并声明与该ModelAdmin关联的模型。这是ModelAdmin基础知识,您可以在文献资料中找到它。此外,查看视图基础可以在这份文件中找到。

代码语言:javascript
复制
class OrderAdmin(ModelAdmin):
    model = Order
    inspect_view_enabled = True
    inspect_view_fields = (
        'id',
        'date',
    )

我有一个名为Order的模型,我只需要在摇尾检查视图中显示iddate。此外,我还有一个Address模型,它与Order模型有一对一的关系。我需要在检查视图中显示来自AddressAddress

回答

但是,如果像下面这样添加新字段,就会产生一个错误,因为wagtail无法在Order模型中找到一个名为city的字段。

代码语言:javascript
复制
inspect_view_fields = (
    'id',
    'date',
    'city',
)

wagtail如何解析字段

对于inspect_view_fields数组中的每个字段,wagtail调用一个名为get_dict_for_field的方法来获取相关的标签和该字段的值。您可以轻松地重写此方法。在重写之后,您应该告诉wagtail使用重写的方法。你可以这样做如下。

代码语言:javascript
复制
class OrderInspectView(InspectView):
    def get_dict_for_field(self, field_name):    # Override to support custom fields
        # Do the implementation for custom fields
        return super().get_dict_for_field(field_name)

class OrderAdmin(ModelAdmin):
    model = Order
    inspect_view_enabled = True
    inspect_view_class = OrderInspectView    # Tell wagtail to use our class instead of the default class
    inspect_view_fields = (
        'id',
        'name',
        'city',    # Custom field
    )

现在需要做的是获取与Address相关联的Order并返回它。您可以使用Order获取当前的检查self.instance

代码语言:javascript
复制
def get_dict_for_field(self, field_name):
    if field_name == 'city':
        qs = Address.objects.filter(order=self.instance.id)
        value = str(qs[0].city) if len(qs) > 0 else '-'
        return {
            'label': 'City',
            'value': value,
        }
    return super().get_dict_for_field(field_name)
票数 1
EN

Stack Overflow用户

发布于 2017-01-11 18:57:36

我没有经常使用InspectView,但它将模型表示为一个重命名的模板,没有字段等等。因此,您也许可以定义自己的模板并从{ value.bound_blocks.order.full_addres }命令调用自定义属性。

希望这有什么用

罗伯特

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41567072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档