Opened 19 years ago
Closed 18 years ago
#4204 closed (invalid)
Admin interface attempts to save null to fields not in 'fields': list
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | contrib.admin | Version: | dev |
| Severity: | 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
Admin appears to attempt to save NULL to fields that are not shown in the Admin interface?
Here is an example model that doesn't work. Trying to update a record using Admin will crash with
"Data truncated; NULL supplied to NOT NULL column 'nlgroup' at row 1"
David
from django.db import models
# Create your models here.
class People(models.Model):
def __str__(self):
return '%s, %s (%s)' % (self.family, self.givens, self.orgname)
# copied from spreadsheet
peopcode = models.CharField(maxlength=8, verbose_name="People Code", unique= True, editable= False)
family = models.CharField(maxlength=25, verbose_name="Family", blank= True)
givens = models.CharField(maxlength=25, verbose_name="Givens", blank= True)
nlgroup = models.CharField(maxlength=3, verbose_name="Newsletter Group", blank= True)
paddress1 = models.CharField(maxlength=80, verbose_name="Postal Address Line 1", blank= True)
paddress2 = models.CharField(maxlength=80, verbose_name="Postal Address Line 2", blank= True)
email = models.EmailField(verbose_name="Email", null = True, blank= True)
orgname = models.CharField(maxlength=40, verbose_name="Organisation Name", blank= True)
class Admin:
fields = (
(None, {
'fields': (('family', 'givens', 'orgname'), 'email')
}),
('Advanced options', {
'classes': 'collapse',
'fields' : ('paddress1', 'paddress2')
}),
)
class Meta:
ordering = ['family', 'givens', 'orgname' ]
Note:
See TracTickets
for help on using tickets.
If you need to have a value for a field before hitting the DB, you need to either show it in the admin and require input, or have code in a custom
savemethod fill in a value before the object is saved to the DB.