Django like reflection

Kirk McDonald kirklin.mcdonald at gmail.com
Tue Feb 6 17:32:35 PST 2007


Hasan Aljudy wrote:
> 
> 
> 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?

I was playing with this a couple weeks ago, even without these new 
mixins. I started playing with a proof-of-concept, but got distracted by 
other things. I described some of my efforts in this forum thread:

http://dsource.org/forums/viewtopic.php?t=2283

-- 
Kirk McDonald
Pyd: Wrapping Python with D
http://pyd.dsource.org



More information about the Digitalmars-d mailing list