Hi,
I learned django during the last days. Here are my impressions
and some questions.
Background: I develop web applications with python since 6 years.
First with Zope, then with quixote and ZODB.
I am missing a CurrencyField. It could be a subclass of FloatField
but with a currency symbol. (100,00 *Eur*)
First I missing a way to sync the database with the model. The command
syncdb has a bad name. It should be called initdb. But you can live
without autosync: Redirect the output of sqlall to a file. Update model,
redirect the output again, and then "diff old.sql new.sql" shows
you what you need to execute in a sql shell (ALTER TABLE ... (ALTER|DROP|ADD)
COLUMN ...)
I am sorry, but I don't like the template language. I have no problem to
have HTML in python code. The newforms.form_for_model() and form_for_instance
are cool. I missed a complete example for creating and modifying an object.
Here is how I did it:
# WFBA Imports
from wfba.models import MyObject
from wfba.views import base
def myobject(request, object_id):
# HTTP Basic Auth has already happened
user=User.objects.get(username=request.environ["REMOTE_USER"])
form=request.POST
if not form:
form=None
if object_id=="add":
MyObjectForm=forms.form_for_model(MyObject)
title="Create new MyObject"
else:
myobject=MyObject.objects.get(id=object_id)
MyObjectForm=forms.form_for_instance(myobject)
title="MyObject Nr. %d" % myobject.id
af=MyObjectForm(form)
if af.is_valid():
obj=af.save()
return django.http.HttpResponseRedirect(obj.get_absolute_url())
if object_id=="add":
af.fields["user"].initial=user.id
af.fields["status"].initial="new"
return django.http.HttpResponse('''
%s
<form action="%s" method="post">
<table border="1">
%s
</table>
<input type="submit" value=" Save ">
</form>
%s
''' % (
base.header(request, title),
request.path,
af.as_table(),
base.footer()))
But: This form does not look as goog as the admin interface.
Example: A DateField does not have the Calendar Popup. I found no
way to add this (class="vDateField").
If I understood it right, you should set null=True for FloatField and
DateField (and not blank=True) if it is optional. The newforms library
does not handle this correct. If there is no blank=True in the model,
it complains (ignores null=True). If I use blank=True the sql insert fails,
since the empty string is not a valid date.
Newforms: I like the as_table() output. Except: The errors should be in a
third column: <td>...</td>.
I am missing an (epydoc) API documentation. Some important methods (e.g.
Model.save()) don't have a docstring!
I use the unicode branch and there were only some minor problem, which I fixed
with two small patches (added to Trac). But USE_I18N must not be set to
true. If I do, I get errors, which I could not fix myself.
Back to templates: I might use templates, if I could make function calls with
arguments. I just want to pass the request object to my method. I found no way
to do this. Yes, I know you can create own tags, but that's too complicated.
TEMPLATE_STRING_IF_INVALID: The zen of python: "Errors should never pass
silently.". I want an exception if the template can't resolve a variable.
I already ordered the django book.
Model.get_FOO_display(): I think two different namespaces get together, which
should better be seperated. Model.fields.FOO.display() would be better. Some
fields don't have this method. This would make a loop over all fields and
display them much easiert.
Introspection: How to get all fields of a model instance? I discovered
obj._meta.fields. Is this an offical API?
Admin Template (Table of all rows):
{% for result in results %}
<tr class="{% cycle row1,row2 %}">
{% for item in result %}{{ item }}{% endfor %}
</tr>
{% endfor %}
How can you do the same with python code?
Nevertheless I like django a lot. Maybe some parts can get fixed before 1.0.
Thomas
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---