Hi All,

Have you ever quickly set up a model, ran syncdb, and added a few sample 
objects in the admin to only see a bunch of "MyModel object"s in the 
changelist? I always forget to add a __unicode__()/__str__() method on my 
models.

I ran "git grep -1 __unicode__" on some of my django projects and noticed a 
lot of repeated code. In fact, it seems that in about a _third_ of all my 
cases, I'm just returning self.name, or returning self.name would have been 
a good default. I looked at a few 3rd party apps for comparison and found 
similar results, though not for every app.

IMHO, returning self.name (if the field or property exists) is a sensible 
default for __unicode__. We can still return "MyModel object" if there's no 
"name" attribute. You'll still end up adding your own __unicode__ method 
much of the time, just like you always have.

Yes, it's "magic", but we can document it.
Yes, it's a little more confusing, but we don't have to explain it during 
the tutorial.
Yes, it's backwards incompatible, but only in rare cases should it be a 
problem.
Yes, it could look like any Model without a "name" field is "wrong", but 
it's not.
Yes, "title" is also very popular, but name is better. :)

It has the effect of being a little more friendly in many cases, and can 
result in more DRY code.

What do your __unicode__/__str__ methods look like? Is this a bad idea?

Thanks,
Collin

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to