다른 입력이 변경되었을 때 일부 옵션 텍스트를 기록 할 수 있도록 모델에 대해 admin.ModelAdmin
에 추가 입력을 추가하려고합니다.Django ModelAdmin 모델이 아닌 추가 입력 필드
ModelForm
을 name 'EquipmentAdmin' is not defined
으로 인식 할 수 없습니다. 여러 가지 다른 방법으로 가져 오기를 시도했지만 분명히 뭔가 놓쳤음에 틀림 없다고 생각합니다. EquipmentAdmin
과 EquipmentAdminForm
사이에 순환 참조가있는 것처럼 느껴집니다. 두 참조 모두 코드에서 서로 참조를 포함하기 때문입니다.
장고 응용 프로그램 Flightdeck
을 만들었으며이 파일들을 모두 같은 폴더에 저장했습니다.
models.py
from django.db import models
class Location(models.Model):
name = models.CharField(max_length=45)
class Equipment(models.Model):
unit_id = models.CharField(max_length=45)
located = models.ForeignKey(Location)
located_from = models.DateField()
class EquipmentLocationHistory(models.Model):
unit = models.ForeignKey(Equipment)
located = models.ForeignKey(Location)
start = models.DateField()
end = models.DateField()
change_reason = models.CharField(max_length=45)
admin.py
from django.contrib import admin
from flightdeck.models import *
from flightdeck.forms import EquipmentAdminForm
class EquipmentAdmin(admin.ModelAdmin):
form = EquipmentAdminForm
def save_model(self, request, obj, form, change):
if 'located' in form.changed_data:
try:
old = Equipment.objects.get(unit_id=obj.unit_id)
except Equipment.DoesNotExist:
old = None
if old:
if 'located' in form.changed_data:
located_history = EquipmentLocationHistory(unit=obj, located=old.located, start=old.located_from, end=obj.located_from)
located_history.save()
obj.save()
forms.py
from django import forms
from django.contrib import admin
class EquipmentAdminForm(forms.ModelForm):
reason = forms.CharField()
class Meta:
model = EquipmentAdmin
내가 공을 포함 할 것값을 EquipmentLocationHistory
을 추가했지만 EquipmentAdminForm
이로드되지 않은 상태에서 테스트 할 수 없습니다.