在Django-admin中,在list-uneditabiled中实现一对多编辑的简单方法是什么?

2024-04-25 12:08:23 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑到以下型号:

class Store(models.Model):
    name = models.CharField(max_length=150)

class ItemGroup(models.Model):
    group = models.CharField(max_length=100)
    code = models.CharField(max_length=20)

class ItemType(models.Model):
    store = models.ForeignKey(Store, on_delete=models.CASCADE, related_name="item_types")
    item_group = models.ForeignKey(ItemGroup)
    type = models.CharField(max_length=100)

当查看单个Store时,内联的句柄将多个item_types添加到Store中。在

内容管理团队希望能够批量编辑存储及其类型。有没有一种简单的方法在list_editable中实现Store.item_types,它也允许添加新记录,类似于horizontal_filter?如果没有,是否有一个简单明了的指南来说明如何实现自定义的list_editable模板?我一直在谷歌上搜索,但什么也没想到。在

另外,如果有一种更简单或更好的方法来设置这些模型,使其更易于实现,请随时发表评论。在


Tags: 方法storenamemodelmodelsgroupitemlength
1条回答
网友
1楼 · 发布于 2024-04-25 12:08:23

把ItemType设为存储的多个字段怎么样?在

在我看来,如果要更改存储区中可用的项类型,则更改存储区的属性(而不是项类型)。在

例如:

from django.db import models

class ItemGroup(models.Model):
    group = models.CharField(max_length=100)
    code = models.CharField(max_length=20)

class ItemType(models.Model):
    item_group = models.ForeignKey(ItemGroup)
    type = models.CharField(max_length=100)

class Store(models.Model):
    name = models.CharField(max_length=150)
    item_type = models.ManyToManyField(ItemType, related_name="store")

# admin
from django.contrib import admin

class StoreAdmin(admin.ModelAdmin):
    list_display=('name', 'item_type',)
    list_editable=('item_type',)

for model in [(Store, StoreAdmin), (ItemGroup,), (ItemType,)]:
    admin.site.register(*model)

这里有个错误:

^{pr2}$

我把第41-43行注释掉django.contrib.admin.验证:

#if isinstance(f, models.ManyToManyField):
#    raise ImproperlyConfigured("'%s.list_display[%d]', '%s' is a ManyToManyField which is not supported."
#        % (cls.__name__, idx, field))

可能不是理想的解决方案,但似乎对我有效。在

相关问题 更多 >