

Show HN: Django Model Parsing with Python's AST module - fatiherikli
https://github.com/fatiherikli/django-model-parser

======
natrius
Parsing the text of models isn't the best way to get information about them.
The _meta attribute of a model provides tons of information about a model, its
fields, and how to deal with its database representation.

Parsers are neat in general, so if you had fun with it, more power to you.

~~~
fatiherikli
It's true, but the _meta way is not convenient for my use case. I am parsing
uploaded python script (django model).

~~~
natrius
I don't understand how you can run your parser if you can't run arbitrary
Python code.

~~~
mcantelon
Running untrusted code someone has uploaded is risky.

~~~
natrius
Oh, I get it. User-uploaded Django models. Makes sense.

------
DanielN
This seems really cool, but I'm having some trouble coming up with a use case
for this. Why would I want to translate my django model to a dictionary?

~~~
fatiherikli
I will use it for generating database schema of uploaded django models. It's
my use case. Because sandboxing in python is too hard, I can not execute
uploaded python script.

~~~
mattdeboard
manage.py sqlall ?

~~~
lmz
doesn't that import the modules i.e. execute them?

~~~
natrius
This project is a Python module. It has to be executed at some point.
Presumably, you'd generate the SQL locally by running manage.py sqlall, then
get the SQL to your database in the appropriate manner. That's the same
process the eventual product of this module would require.

~~~
shabble
That assumes your end goal is actually using the provided models in your
application. It sounds like this is using them as pure data only.

I can think of a couple of reasons why you might want that, maybe if you
wanted to create a relationship graph like django-extensions
'graph_models'[1], or build some sort of introspective API scaffold generator
or something.

[1] [https://github.com/django-extensions/django-
extensions/blob/...](https://github.com/django-extensions/django-
extensions/blob/master/docs/graph_models.rst)

------
mattdeboard
Neat. The AST module was a good way for me as a novice-intermediate programmer
to get better acquainted with parsing. I have a small module that parses raw
Solr-style querystrings into Haystack's SQ objects. Haven't touched it in
months but it was a good learning exercise.
<https://github.com/mattdeboard/rawqs-sq>

