Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#30626 closed Bug (invalid)

InlineModelAdmin fails of an empty form when DecimalField has default and blank=True.

Reported by: Dmitry Chaplinsky Owned by: nobody
Component: contrib.admin Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I have following code for the model:

class PayrollItem(models.Model):
    payroll = models.ForeignKey(
        "Payroll",
        verbose_name="Payroll",
        on_delete=models.CASCADE,
        related_name="items",
    )
    contract = models.ForeignKey(
        "Contract",
        verbose_name="Contract",
        on_delete=models.CASCADE,
        related_name="payments",
    )
    hours = models.DecimalField("Hours", decimal_places=2, default="0.00", max_digits=7, blank=True)
    current_rate = models.DecimalField(
        "Hourly rate", decimal_places=2, default="0.00", max_digits=7, blank=True
    )

which is then added as an InlineModelAdmin:

class PayrollItemInline(admin.TabularInline):
    extra = 1
    model = PayrollItem

when I hit save parent object, Django raises validation error for foreign key of an empty inline form like in attached file

If I exclude "hours", "current_rate" everything works as expected!

Attachments (1)

nac35ntlfg831.jpg​ (160.7 KB ) - added by Dmitry Chaplinsky 7 years ago.
Validation error

Download all attachments as: .zip

Change History (3)

by Dmitry Chaplinsky, 7 years ago

Attachment: nac35ntlfg831.jpg​ added

Validation error

comment:1 by Mariusz Felisiak, 7 years ago

Resolution: → invalid
Status: new → closed
Summary: InlineModelAdmin fails validation of an empty form when there are ForeignKey and DecimalField with default="0.00" → InlineModelAdmin fails validation of an empty form when there are ForeignKey and DecimalField with default="0.00".
Version: 2.2 → master

Thanks for this report, however your models configuration allows for such behavior. If a field has blank=True form validation will allow entry of an empty value (see ​blank documentation) and default will not be used because value (empty) is provided (see ​default documentation). In the same time you have NOT NULL constraint in a database.

Closing per TicketClosingReasons/UseSupportChannels.

comment:2 by Mariusz Felisiak, 7 years ago

Summary: InlineModelAdmin fails validation of an empty form when there are ForeignKey and DecimalField with default="0.00". → InlineModelAdmin fails of an empty form when DecimalField has default and blank=True.
Note: See TracTickets for help on using tickets.
Back to Top