-1
부서에 현재 작업중인 프로젝트를 등록하는 양식이 있습니다.Django forms : 초기 값 설정
models.py
class Department(models.Model):
dept_name = models.CharField(max_length=25)
address = models.CharField(max_length=50)
class Project(models.Model):
projectname = models.CharField(max_length=25)
department = models.ForeignKey(Department, null=True, blank=True, on_delete=models.SET_NULL)
forms.py
class ProjectChoiceField(ModelChoiceField): # return a list of projects for the department form.
def label_from_instance(self, obj):
return "%s" % obj.projectname
class SetDepartmentProjectForm(ModelForm):
def __init__(self, *args, **kwargs):
super(SetDepartmentProjectForm, self).__init__(*args, **kwargs)
if not self.fields['projectstring']: # no default set
self.fields['projectstring'] = ProjectChoiceField(Project.objects.filter(department=self.instance), required=False)
else:
project = Project.objects.get(projectname=self.fields['projectstring'])
self.fields['projectstring'] = ProjectChoiceField(Project.objects.filter(department=self.instance), required=False, initial=project.pk)
class Meta:
model = Department
fields = ['dept_name', 'address', 'projectstring']
이 값 세트가없는 경우 프로젝트의 드롭 세트를 만들기 위해 확인을 작동하지만, 일부 프로젝트 이름 값으로 설정되어있는 경우 - 초기 arg (Project.pk)는 올바른 프로젝트를 폼의 초기 값으로 선택하지 않습니다.
initial = self.instance.related_fieldname은 문자열이며 pk가 없습니다. 관련된 OtherModel의 pk를 조회하려고합니까? 즉. 위젯이 ChoiceField의 값으로 사용하는 것입니다. – Xeberdee
'OtherModel'의 인스턴스 여야합니다. 그렇습니까? – slurms
OtherModel 선택은 실제로 다른 모델의 pk입니다. 그러나 올바른 pk를 선택하고 intial = other_model.pk를 선택하더라도 여전히 기본적으로 아무것도 선택되지 않습니다. --------- 내 편집을 참조하십시오. – Xeberdee