Hi all,

I am trying to find a best way to solve the following problem:

I have chemicals, each of which has a list of codes and names.
Chemicals have too many codes and names to put directly into the
Chemical model.

Example (pseudo) models.py:

class Chemical():
    pass

class Name():
    chemical = ForeignKey(Chemical)
    nametype = Integer # in reality a foreign key
    name = varchar(50)
    unique_together(chemical, nametype)

class Code():
    chemical = ForeignKey(Chemical)
    codetype = Integer
    code = varchar(50)
    unique_together(chemical, codetype)

I need to make listings of these chemicals, (chemical_id, name, code),
and I need to change dynamically which name and which code to show.
Naturally the listings need to be searchable.

The most beautiful solution would be the possibility to directly use:

Chemical.objects.filter(code__codetype = 1).filter(name__nametype =
1)\
        .filter(code__code__contains = '123').values
('pk','code__code', 'name__name')

but Django orm can't handle this currently. I actually looked into the
code to see how hard this would be to implement for values and
values_list. I quickly saw that this is not something you want to do
as your first Django coding project...

So far I have a few solutions to this problem.

1) Use raw sql
    - works, but is ugly

2) Create a database view and a corresponding model, and use that for
listings
    - works, but is after all only marginally better than solution 1.
Biggest problem is that it is not DRY.

3) Filter both Name and Code manually, then join them in python.
    - I haven't really tried this one. I think this is the ugliest so
far.

I am currently using solution 2. but I am wondering if there is some
better way to do this? Maybe using .extra() in some way?

By the way, I have just switched to Django from JDBC + jsp. I can't
believe how easy web programming can be with the right tools. Thank
you!


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to