Finally, I'm starting to see some light and it is almost working.
From what I see I reckon you will need to create both a custom field and a custom widget!
I think so because if you have TextInputs validation may fail on the ModelMultipleChoiceField?
Yes, they do, because it checks that the value is a pk
on the related table (attribute in this case)
I would think you need to override the methods: __init__, clean, to_python and compress.
With __init__ and clean is enough
I think you will also need to create a more customized widget inheriting directly from MultiWidget?
I think you would need to override the methods: __init__, render, decompress
Yes also,
But I'm no expert ;-(
Well, you are closer than I am :)
Thanks for the help.
On Sun, Aug 26, 2012 at 7:42 PM, Nicolas Emiliani <or3st3s@gmail.com> wrote:
--Hi,I've been struggling with this for the past two weeks, and i think it's time to ask.I have and admin form that has a ModelMultipleChoiceField that is used to displaya ManyToMany model field that specifies a through modelclass Person(models.Model):name = models.CharField(max_length=10)attributes = models.ManyToManyField('Attribute',through='Has',blank=True, null=True)class Has(models.Model):person = models.ForeignKey('Person')attribute = models.ForeignKey('Attribute')value = models.CharField(max_length=10)class Attribute(models.Model):name = models.CharField(max_length=10)atype = models.CharField(max_length=2,choices=(('TF','true/false'),('IN','text')))class PersonAdminForm(forms.ModelForm):class Meta:model = Personattrs = forms.ModelMultipleChoiceField( \label='Attributes',queryset=Attribute.objects.all(),widget=forms.CheckboxSelectMultiple(),)This CheckboxSelectMultiple works fine, but I want to be able to rendereach relation according to the Attribute.atype value, meaning if it is TF,then tender it as a CheckBox, if it is IN the render it as an InputTextI inherited from CheckboxSelectMultiple so it does that, but then when I'mon the admin form and for one specific attribute of type IN, rendered as aTextInput, I set a value (let's say 500) and then press save , the methodSelectMultiple.value_from_datadict gets called and passed as data :<QueryDict: {u'csrfmiddlewaretoken': [u'GWLnuoTSTjjLmpYOizodBA4VA1FmwdQw'],u'_continue': [u'Save and continue editing'], u'name': [u'nico'], u'attrs': [ u'2']}>And this is what has been driving me nuts!u'attrs': [ u'2'],As you can see it only passes the id of the attribute, not the id and the value. What Ineed is something likeu'attrs': [ (u'2','500')],Any ideas on how to fix this ?Thanks!--
Nicolas Emiliani
Lo unico instantaneo en la vida es el cafe, y es bien feo.
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
Nicolas Emiliani
Lo unico instantaneo en la vida es el cafe, y es bien feo.
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment