Django like reflection (was: Re: Web development status)
Hasan Aljudy
hasan.aljudy at gmail.com
Tue Feb 6 17:18:50 PST 2007
Julio César Carrascal Urquijo wrote:
> Antti Holvikari wrote:
>> On 1/22/07, Hasan Aljudy <hasan.aljudy at gmail.com> wrote:
>>> I wish we'd have a framework similar to Django, however, come to think
>>> of it .. I'd rather use Django than wait for a D clone .. which I don't
>>> think can be more powerful since D doesn't have any dynamic reflection
>>> capabilities.
>>
>> Hmm, hope I'm not missing something here but why would you need
>> reflection for that?
>>
>
> Django uses python's reflections capabilities to bind classes to SQL
> tables and build administration interfaces in ways that I don't thing
> even the compile time reflection capabilities of D can implement.
>
> The following code taken from the Django tutorial admin interfaces for
> this Master/Details model with all the features you will expect:
> Pagination, searching, basic validation and form field grouping. Adding
> filtering and custom validation is really easy.
>
> from django.db import models
>
> class Poll(models.Model):
> question = models.CharField(maxlength=200)
> pub_date = models.DateTimeField('date published')
>
> class Admin:
> fields = (
> (None, {'fields': ('question',)}),
> ('Date information', {'fields': ('pub_date',)}),
> )
>
> class Choice(models.Model):
> poll = models.ForeignKey(Poll)
> choice = models.CharField(maxlength=200)
> votes = models.IntegerField()
>
> class Admin:
> pass
>
> As you can see, Django uses reflection to build all of this
> functionality with just some hints from the programmer.
I'm wondering whether this can be achieved now with the new mixin semantics.
The usage maybe ugly:
mixin(
models.Model!("poll",
models.CharField!("question"),
models.DateTimeField!("pubdate")
)
);
But maybe this can generate some rich code .. I wish had the time and
experience to take on this.
Anyone willing to give it a try?
More information about the Digitalmars-d
mailing list