I looked at the MultiWidget and tried to implement following a couple of examples, but I have run into a problem. I get this error when I try to open the admin form - type object 'MeasurementWidget' has no attribute 'attrs'
widgets.py class MeasurementWidget(forms.MultiWidget): def __init__(self, attrs=None): widgets = ( forms.textInput(attrs=attrs), forms.textInput(attrs=attrs), forms.textInput(attrs=attrs), ) super(MeasurementWidget, self).__init__(widgets, attrs) def decompress(self, value): if value: frac = Fraction(value) num = frac.numerator denom = frac.denominator whole = num/denom if whole == 0: whole = '' numerator = num - (num/denom)*denom return [whole, numerator, denom] return ['', '', ''] def format_output(self, rendered_widgets): return u''.join(rendered_widgets) def value_from_datadict(self, data, files, name): valuelist = [widget.value_from_datadict(data, files, name + '_%s' % i) for i, widget in enumerate(self.widgets)] try: if valuelist[0] == '': valuelist[0] = 0 numerator = int(valuelist[0]) * int(valuelist[2]) + int(valuelist[1]) denominator = int(valuelist[2]) return Decimal(float(Fraction(numerator, denominator))) except ValueError: return "" models.py class Inventory(models.Model): location = models.ForeignKey(Location) room = models.ForeignKey(Room, blank=True, null=True) condition = models.ForeignKey(Condition) status = models.ForeignKey(Status) category = models.ForeignKey(Category) length = models.DecimalField(max_digits=5, decimal_places=3, default=0) width = models.DecimalField(max_digits=5, decimal_places=3, default=0) height = models.DecimalField(max_digits=5, decimal_places=3, default=0) and other fields..... admin.py class MeasurementForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(MeasurementForm, self).__init__(*args, **kwargs) self.fields['width'].widget = MeasurementWidget self.fields['height'].widget = MeasurementWidget self.fields['length'].widget = MeasurementWidget class Meta: model = Inventory class InventoryAdmin(admin.ModelAdmin): list_display = ('id','location', 'room', 'category', 'description', 'condition', 'length', 'width', 'height', 'status', 'sale_price', 'selling_costs', 'debt') list_filter = ['category'] search_fields = ['description'] form = MeasurementForm inlines = [NoteInline, ImageInline, EstimateInline] admin.site.register(Inventory, InventoryAdmin) I am really lost here. Does anyone have an easier way to override the widgets on the admin form? Thanks, Mark On Thu, Apr 10, 2014 at 7:09 PM, Lucas Klassmann <lucasklassm...@gmail.com>wrote: > Hi! > > I never used this, but i found here and can be useful: > > > https://docs.djangoproject.com/en/dev/ref/forms/widgets/#django.forms.MultiWidget > > Cheers. > > > On Thu, Apr 10, 2014 at 10:56 PM, Mark Phillips < > m...@phillipsmarketing.biz> wrote: > >> I hope I am using the right terminology.... >> >> I have a Decimal field in a model called 'width'. In the admin screen, I >> would like to display this field as three text boxes like this: >> >> width: [] []/[] >> >> so I can enter 2 1/8 for the width, and then have the code convert that >> to 2.125 as a Decimal field and store that Decimal field in the database. >> >> How would I go about doing this? >> >> Thanks, >> >> Mark >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to django-users+unsubscr...@googlegroups.com. >> To post to this group, send email to django-users@googlegroups.com. >> Visit this group at http://groups.google.com/group/django-users. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/CAEqej2MkiPYfjO4afqyWVr587AL5UczhuzJCLhgxeqjda8%2BcDw%40mail.gmail.com<https://groups.google.com/d/msgid/django-users/CAEqej2MkiPYfjO4afqyWVr587AL5UczhuzJCLhgxeqjda8%2BcDw%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Lucas Klassmann > Desenvolvedor de Software > > Email: lucasklassm...@gmail.com > Web site: http://www.lucasklassmann.com > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to django-users+unsubscr...@googlegroups.com. > To post to this group, send email to django-users@googlegroups.com. > Visit this group at http://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CAOz50pLMMRv8-boG1C0Rb7vriVnpO-G953Lbh0zoRhjG6-zsLQ%40mail.gmail.com<https://groups.google.com/d/msgid/django-users/CAOz50pLMMRv8-boG1C0Rb7vriVnpO-G953Lbh0zoRhjG6-zsLQ%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAEqej2Onin-ONGCxnC6WLpO9cL66UoENiyopp2aPns0A%3D2JkWw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.