#24861: Pass a queryset for each different field Admin Inlines
-----------------------------+---------------------------------------------
     Reporter:  unehub       |      Owner:  nobody
         Type:  New feature  |     Status:  new
    Component:               |    Version:  master
  contrib.admin              |
     Severity:  Normal       |   Keywords:  admin, inlines, forms, formsets
 Triage Stage:  Unreviewed   |  Has patch:  0
Easy pickings:  0            |      UI/UX:  0
-----------------------------+---------------------------------------------
 Pretend to have in the Django admin, 2 forms inlines, Each with a pair of
 fields choices, "Attributes" and "Value Option". We have the first pair,
 which initialize the field one with a value, for example color and other
 field you must have a queryset the choices.

 [[Image(http://i.stack.imgur.com/kk1xQ.png)]]

 As you can see We need to filter each pair with their default values, if
 Color should show only white, black and blue.


 {{{
 class ProductAttributeValueForm(forms.ModelForm):
     attribute = forms.ModelChoiceField(label=_('Attribute'),
         widget=forms.Select(attrs={'disabled': 'True'}),
         queryset=ProductAttribute.objects.all(), required=False)

 class ProductAttributeValueFormSet(BaseInlineFormSet):

     def __init__(self, *args, **kwargs):
         super(ProductAttributeValueFormSet, self).__init__(*args,
 **kwargs)
         # This return initial [{'attribute' initial}, {..}, {..}]
         self.initial = [{'attribute': a} for a in
 obj.category.attributes.all()]
         # Now we need to make a queryset to each field of each form inline
         self.queryset = [{'value_option' .. }, { .. }]
 }}}

 What I do is initialize each attribute with a value, for example, Color
 and passed a queryset to value_option with their respective values, white,
 blue and black. I have tried to do this two days ago and I have not
 accomplished anything, not if the solution is on the forms or in any
 function of admin.

 if I could just iterate a QuerySet each model choice of the form. The only
 thing achieved is that a queryset applies to all forms inline, but I need
 a different one for each inline.

 def formfield_for_foreignkey(self, db_field, request, **kwargs):
     if db_field.name == "value_option":
         kwargs["queryset"] = request._obj_.category.attributes.all()
     return super(AttributeInline, self).formfield_for_foreignkey(db_field,
 request, **kwargs)

 So, if you have Attribute: Color, Size, ROM, RAM,  the ideal would happen
 to a custom list value_options each.

--
Ticket URL: <https://code.djangoproject.com/ticket/24861>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/049.67e97849cb1c2dc172a71aea12e07dc8%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to