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 [email protected].
To post to this group, send email to [email protected].
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