gpt4 book ai didi

django - 如何在多对多关系中使用带有可编辑字段的 TabularInline?

转载 作者:行者123 更新时间:2023-12-04 12:37:03 26 4
gpt4 key购买 nike

我的模型包含多对多关系。 Measurements可以是任意数量的 DataSets 的一部分.

# models.py
from django.db import models

class DataSet(models.Model):
purpose = models.TextField()

class Measurement(models.Model):
value = models.IntegerField()
sets = models.ManyToManyField(DataSet, null=True, blank=True,
verbose_name="datasets this measurement appears in")

我希望我的管理界面内联 Measurement DataSet 中的字段管理员很喜欢 TabularInlineForeignKey 一起使用 field 。这是我到目前为止:
# admin.py
from django.contrib import admin
from myapp.models import Measurement, DataSet

class MeasurementInline(admin.TabularInline):
model = Measurement.sets.through

class DataSetAdmin(admin.ModelAdmin):
inlines = [MeasurementInline]

admin.site.register(DataSet, DataSetAdmin)

不幸的是,我得到的只是旁边带有“+”按钮的下拉框,用于打开测量管理。我想要实际的测量字段 value在内联中暴露。我尝试添加 value到 MeasurementInline 上的字段列表:
# admin.py    
class MeasurementInline(admin.TabularInline):
model = Measurement.sets.through
fields = ['value']

但这给了我一个错误: 'MeasurementInline.fields' refers to field 'value' that is missing from the form. .

如何公开 Measurement 的可编辑字段内 DataSet行政?

笔记:
这是一个简化的案例;我的真实案例在其 Measurement 中有很多字段模型。如果使用管理界面的人必须打开一个新窗口来输入数据,那将是非常乏味的,特别是因为他们还需要在字段之间进行一些复制和粘贴。

即使在我的真实模型中,我希望用户内联编辑的数据也没有描述 DataSet 之间的关系。和 Measurement -- 只有 Measurement本身。我相信这使得中间模型不适合我的目的。

最佳答案

简短的回答:你不能。

长答案:你不能不大量编辑 django 的 ModelAdmin。它使用的 InlineFormset 工厂极其有限,目前无法处理 ManyToManyInlines。 InlineModelAdmin 对象仅支持外键。

对不起。

关于django - 如何在多对多关系中使用带有可编辑字段的 TabularInline?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5797915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com