Opened 3 years ago

Closed 3 years ago

Last modified 3 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 3 years ago.
Validation error

Download all attachments as: .zip

Change History (3)

Changed 3 years ago by Dmitry Chaplinsky

Attachment: nac35ntlfg831.jpg added

Validation error

comment:1 Changed 3 years ago by Mariusz Felisiak

Resolution: invalid
Status: newclosed
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.2master

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 Changed 3 years ago by Mariusz Felisiak

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