특정 필드에 대한 사용자 정의 쿼리 세트가있는 django modelform 인스턴스

StackOverflow https://stackoverflow.com/questions/1821289

  •  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'
    )
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top