OK, after digging through mezzanine/account/forms.py, it looks like what I
really wanted to subclass was ProfileFieldsForm, like so:
class MyProfileFieldsForm(ProfileFieldsForm):
class Meta(ProfileFieldsForm.Meta):
widgets = {
'skills': forms.TextInput
}
class MyProfileForm(ProfileForm):
def get_profile_fields_form(self):
try:
return MyProfileFieldsForm
except NameError:
raise ProfileNotConfigured
That gives me a generic text input for my field. Now to create my widget
...
On Friday, October 3, 2014 12:59:41 PM UTC-4, Joel Gwynn wrote:
>
> Thanks! I think that's exactly what I need, but I still can't quite make
> it work. If you'll bear with me, here's my model:
>
> class MyProfile(models.Model):
> user = models.OneToOneField("auth.User")
> updated = models.DateField(auto_now=True)
> postalcode = models.CharField(max_length=50)
> skills = models.ManyToManyField(Skill)
>
> and my form:
>
> class MyProfileForm(ProfileForm):
> class Meta(ProfileForm.Meta):
> widgets = {
> 'skills': forms.TextInput(),
> }
>
> The "widgets" setting doesn't seem to affect my form at all; I'm still
> getting a multi-select. I know that this form class is being used, because
> if I have an error, it causes the page not to work :)
>
> Thanks again for your help.
>
> On Thursday, October 2, 2014 4:22:32 PM UTC-4, Josh Cartmell wrote:
>>
>> I would use the ACCOUNT_PROFILE_FORM_CLASS to specify your own profile
>> form,
>> https://bitbucket.org/stephenmcd/mezzanine/src/ac4822d66090cef9b29e4477d9192a63431d4f28/mezzanine/accounts/defaults.py?at=default#cl-41
>>
>> Inherit from the default form and you can override the widget for the m2m
>> and specify the widget. Look at the first example here:
>>
>> https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-default-fields
>>
>> On Thu, Oct 2, 2014 at 11:12 AM, Joel Gwynn <[email protected]> wrote:
>>
>>> Thanks, Josh. I think I understand. The Django documentation assumes
>>> that I'll be creating my own ModelForm class, but I'd imagine that in
>>> Mezzanine I'd want to use the existing mezzanine.accounts.ProfileForm
>>> class. So how do I tell the ProfileForm class to use my widget for my
>>> MyProfile class field?
>>>
>>> On Thursday, October 2, 2014 10:29:50 AM UTC-4, Josh Cartmell wrote:
>>>>
>>>> Hey Joel, there is nothing specific in Mezzanine that will help you
>>>> accomplish that. What you will need to do is create a custom widget for
>>>> the field (or find one somewhere that does what you want). Here is the
>>>> Django documentation on widgets:
>>>>
>>>> https://docs.djangoproject.com/en/1.7/ref/forms/widgets
>>>>
>>>> On Wed, Oct 1, 2014 at 1:15 PM, Joel Gwynn <[email protected]> wrote:
>>>>
>>>>> On Wednesday, October 1, 2014 12:05:54 PM UTC-4, Joel Gwynn wrote:
>>>>>>
>>>>>> I'm just starting out with Mezzanine, and I'd like to know what's the
>>>>>> mezzanine way to add an auto-complete input to the user profile page.
>>>>>> I've
>>>>>> extended the user profile with a OneToOneField, and I'd like to add an
>>>>>> auto-suggest input on the user's profile management page.
>>>>>>
>>>>>>
>>>>> Sorry, I should have said, it's a ManyToManyField, and I want to
>>>>> replace the multi-select with an auto-complete text field.
>>>>>
>>>>>
>>>>>> TIA,
>>>>>> Joel
>>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Mezzanine Users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Mezzanine Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
--
You received this message because you are subscribed to the Google Groups
"Mezzanine Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.