Django ModelForm instance with custom queryset for a specific field

后端 未结 3 849
野趣味
野趣味 2020-12-08 14:55

I have a model not unlike the following:

class Bike(models.Model):
    made_at = models.ForeignKey(Factory)
    added_on = models.DateField(auto_add_now=True         


        
相关标签:
3条回答
  • 2020-12-08 14:59

    Nowaday, you should use:

        form.base_fields['alumno_item'].queryset = AlumnoItem.objects.prefetch_related(
            'alumno',
            'alumno__estudiante',
            'alumno__estudiante__profile',
            'item'
        )
    
    0 讨论(0)
  • 2020-12-08 15:06

    You question might be a dupe of this.

    S. Lott's answer there is the ticket to solve your problem. He answered:

    ForeignKey is represented by django.forms.ModelChoiceField, which is a ChoiceField whose choices are a model QuerySet. See the reference for ModelChoiceField.

    So, provide a QuerySet to the field's queryset attribute. Depends on how your form is built. If you build an explicit form, you'll have fields named directly.

    form.rate.queryset = Rate.objects.filter(company_id=the_company.id) If you take the default ModelForm object, form.fields["rate"].queryset = ...

    This is done explicitly in the view. No hacking around.

    0 讨论(0)
  • 2020-12-08 15:13

    try something like this in the view

    form  = BikeForm()
    form.fields["made_at"].queryset = Factory.objects.filter(user__factory)
    

    modify the Factory queryset so that it identifies the factory which the user works at.

    0 讨论(0)
提交回复
热议问题