python - how to convert the foreign key id to the value - Django -
i defined next models in models.py file in django:
class hadoopdistributor(models.model): name = models.charfield(max_length=100) def __str__(self): homecoming self.name class cluster(models.model): size = models.integerfield(default=0) name = models.charfield(max_length=300, default="") hadoop_dist = models.foreignkey(hadoopdistributor) hadoop_version = models.foreignkey(hadoopversion) dgsecure = models.foreignkey(dgsecure) user = models.foreignkey(user) datafiles = models.manytomanyfield(data) created = models.datetimefield(default=none) deleted = models.datetimefield(default=none, blank=true) failed = 'fl' running = 'rn' success = 'sc' destroy = 'ds' status = ( (failed, 'failed'), (running, 'running'), (success, 'success'), (destroy, 'destroy') ) status = models.charfield(max_length=2, choices=status, default=failed) def __str__(self): homecoming self.name def __unicode__(self): pass class meta: ordering = ('hadoop_version', ) so cluster has hadoopdistributor, cloudera. then, on views.py, query list of clusters created particular user:
def get_cluster_list(request): clusters = cluster.objects.filter(user=request.user) cluster_obj = serializers.serialize('json', clusters, indent=2, use_natural_foreign_keys=true, use_natural_primary_keys=true) homecoming httpresponse(cluster_obj, content_type="application/json") now, when http `get:
{ "fields": { "status": "fl", "hadoop_dist": 1, "dgsecure": 1, "name": "", "created": "2014-10-22t22:58:41z", "deleted": "2014-10-22t22:58:41z", "user": [ "philippe" ], "datafiles": [], "hadoop_version": 2, "size": 2 }, but expect value be:
{ "fields": { "status": "fl", "hadoop_dist": "cloudera", "dgsecure": 1, "name": "", "created": "2014-10-22t22:58:41z", "deleted": "2014-10-22t22:58:41z", "user": [ "philippe" ], "datafiles": [], "hadoop_version": 2, "size": 2 }, the trivial way replace elements using foreign key it's name, , return, wonder if there's easy way accomplish this. read little bit __unicode__ in django model, couldn't understand how help me accomplish want. help?
the reply implement method natural_key(self) in hadoopdistributor
so
def natural_key(self): homecoming self.name on side note __unicode__ , __str__ should implement:
def __unicode__(self): homecoming self.name def __str__(self): homecoming unicode(self).encode('utf-8') python ajax json django http
No comments:
Post a Comment