내 모델에는 다 대다 관계가 있습니다. Measurements
은 DataSets
의 숫자 중 일부가 될 수 있습니다.ManyToMany 관계에서 편집 가능한 필드가있는 TabularInline을 어떻게 사용합니까?
# 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")
은 내가 DataSet
관리자에 Measurement
필드처럼 인라인 내 관리 인터페이스를 원하는 방법 ForeignKey
필드가 TabularInline
작동합니다. 이것은 내가 지금까지 무엇을 가지고 : 불행하게도
# 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
이 인라인에 노출되기를 원합니다.
# admin.py
class MeasurementInline(admin.TabularInline):
model = Measurement.sets.through
fields = ['value']
을하지만 그것은 나에게 오류가 있습니다 : 나는 MeasurementInline에 필드 목록에 value
을 추가하는 시도 'MeasurementInline.fields' refers to field 'value' that is missing from the form.
합니다.
Measurement
의 편집 가능한 입력란을 DataSet
관리자에게 표시하려면 어떻게해야하나요?
참고 : 이것은 단순화 된 사례입니다. 제 실제 사례는 Measurement
모델에 많은 분야가 있습니다. 관리자 인터페이스를 사용하는 사람들이 데이터를 입력하기 위해 새 창을 열어야한다면, 특히 필드간에 복사 및 붙여 넣기를해야하기 때문에 지루할 것입니다.
내 실제 모델에서도 사용자가 인라인으로 편집하도록하려는 데이터는 DataSet
과 Measurement
사이의 관계를 나타내지 만 Measurement
만의 데이터입니다. 나는 이것이 나의 목적에 부적합한 중간 모델을 만든다고 믿는다.
측정에서 데이터 세트로 돌아 가기 때문에이 기능이 작동하지 않습니다. – Shayne