Monday, November 29, 2010

Re: Django - Alternative to using NULLs? (for integer and FK fields).

On Tue, Nov 30, 2010 at 12:28, Victor Hooi <victorhooi@gmail.com> wrote:
> Hi,
>
> I'm wondering what the community's stance on using NULL in Django is?
>
> Say for example you have:
>
>    class Person(models.Model):
>        street_address = models.CharField(max_length=50, blank=True)
>        suburb = models.CharField(max_length=30)
>        postcode = models.IntegerField()
>        state = models.CharField(max_length=3)
>        email = models.EmailField()
>        mobile_phone_number = models.IntegerField(max_length=12)
>        home_phone_number = models.IntegerField(max_length=10,
> null=True, blank=True)
>        work_phone_number = models.IntegerField(max_length=8,
> null=True, blank=True)
>
>       spouse = models.ForeignKey('self', null=True, blank=True)
>       children = models.ManyToManyField('self', null=True,
> blank=True)
>
> For string fields like street_address, I can make these "blank=True",
> and Django will store an empty string if the user leaves it blank.
>
> However, for integer fields like home_phone_number and
> work_phone_number, I've had to make these "null=True" for the case
> where somebody doesn't supply them (i.e. they're meant to be optional,
> mobile is required).
>
> However, is there a better way of handling this case? (assuming I want
> to keep these fields as integers).


Is it possible to know why you would want to keep them as integers?
Given that there are no mathematical functions that you would want to
apply to them....


> What about in the case of optional foreign keys (spouse and children)
> - is there a better way of handling these, without using NULLs?

As I understand it, foreign keys are kept in the db as follows:

1. table_Person
2. table_Person_children
3. table_Person_spouse

table 2 has three columns: id, Person, Children
table 3 has three columns: id, Person, Spouse

or something to that effect.

Therefore, if there is no Spouse or Child, there is no entry for
Person in tables 2 or 3.

> Cheers,
> Victor
>
> --
> You received this message because you are subscribed to the Google Groups "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
>
>

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment