특정 필드에 대한 사용자 정의 쿼리 세트가있는 django modelform 인스턴스
-
10-07-2019 - |
문제
다음과는 달리 모델이 없습니다.
class Bike(models.Model):
made_at = models.ForeignKey(Factory)
added_on = models.DateField(auto_add_now=True)
모든 사용자는 여러 공장에서 일할 수 있으므로 사용자 프로필에는 모두 ManyToManyField
에게 Factory
.
이제 건설하고 싶습니다 ModelForm
~을 위한 Bike
그러나 나는 원한다 made_at
현재 사용자가 작동하는 공장으로만 구성됩니다. 아이디어는 사용자가 조립 한 자전거를 추가하고 자전거를 만들었던 공장을 입력 할 수 있어야한다는 것입니다.
어떻게해야하나요?
해결책
당신은 질문이 될 수 있습니다 이것의 속임수.
S. 로트'에스 대답 문제를 해결하기위한 티켓이 있습니다. 그가 답했습니다:
외국 키는 모델 쿼리 세트 인 선택 필드 인 django.forms.modelchoicefield로 표시됩니다. ModelChoicefield 참조를 참조하십시오.
따라서 필드의 쿼리 세트 속성에 쿼리 세트를 제공하십시오. 양식이 어떻게 구축되는지에 따라 다릅니다. 명시 적 양식을 작성하면 직접 이름이 지정된 필드가 있습니다.
form.rate.queryset = Rate.objects.filter(company_id=the_company.id)
기본 modelform 객체를 사용하는 경우form.fields["rate"].queryset = ...
이것은 관점에서 명시 적으로 이루어집니다. 주위에 해킹이 없습니다.
다른 팁
보기에서 이와 같은 것을 시도하십시오
form = BikeForm()
form.fields["made_at"].queryset = Factory.objects.filter(user__factory)
공장 쿼리 세트를 수정하여 사용자가 작동하는 공장을 식별하십시오.
이제 사용해야합니다.
form.base_fields['alumno_item'].queryset = AlumnoItem.objects.prefetch_related(
'alumno',
'alumno__estudiante',
'alumno__estudiante__profile',
'item'
)
제휴하지 않습니다 StackOverflow