我正在使用Django JET构建应用程序,该应用程序实际上是Django Admin网站上的皮肤。我需要为相关模型中的字段启用批更新。所以最终我的问题是我该怎么做?
为了说明,我有两个模型:
input = DataFrame({'A': [1, 2], 'B': [['a', 'b'], 'c']})
listA=input.A.tolist()
listB=input.B.tolist()
count_sublist_len=[len(ele) for ele in listB if type(ele)==list else 1]
# create similar list for A
new_listA=[count_sublist_len[i]*[listA[i]] for i in range(len(listA)]
# flatten them
f_A=[item for sublist in new_listA for item in sublist]
f_B=[item for sublist in listB for item in sublist]
df_new=pd.DataFrame({'A':f_A,'B':f_b})
我还有一个父模型的管理员和一个相关模型的内联:
from django.db import models
class Foo(models.Model):
name = models.CharField(max_length=255)
class Bar(models.Model):
CHOICES = (
('A', 'BEST'),
('B', 'GOOD'),
('C', 'WORST'),
)
name = models.CharField(max_length=255)
quality = models.CharField(max_length=1, choices=CHOICES)
foo = models.ForeignKey(Foo, on_delete=models.DO_NOTHING)
我希望能够为与当前from django.contrib import admin
from admin_example import models
class BarInline(admin.StackedInline):
model = models.Bar
@admin.register(models.Foo)
class FooAdmin(admin.ModelAdmin):
inlines = (BarInline,)
实例相关的所有quality
实例批量更新Bar
。用户仍然必须能够分别为每个Foo
编辑quality
。我的想法是向Bar
添加一个<select>
下拉框。我已经考虑为BarInline
编写自己的模板。我该如何解决这个问题?
答案 0 :(得分:0)
假设您要bulk_update
的所有bar
实例,与foo
的特定实例相关,且具有相同的值quality
。
在这种情况下,更好的方法是将quality
属性移至Foo
模型。这样,bar
的每个特定实例的foo
都可以访问相同的quality
值。
如果通过管理员完成,以相同的bar
值来更新quality
的每个实例,则会导致重复工作过多。
答案 1 :(得分:0)
如果要添加UI功能,则可能需要查看template
attribute for an InlineModelAdmin
class BarInline(admin.StackedInline):
model = models.Bar
template = '/path/to/your/template.html'
此模板负责呈现将要显示的所有单个Bar
对象集。您可能需要查看默认的template for StackedInline