2012-07-12 74 views
0

我有两个表(比如Parent和Child)。我希望父母和孩子使用外键互相链接。子表有两个字段,其中一个是'country_sig'。这country_sig实际上是由父母表加入两个字段'国家''代码'。 例如:如果国家是'IN'且代码是'15',那么country_sig是IN.15在Django中动态创建字段

现在我想的是创造了父表的Django模型的过程中,它会自动创建“国家”和“码”衍生这一领域country_sig ,这样我可以参考子表。

PS:由于父表非常大,我不想在这两个字段派生的数据库中创建另一个字段,但是我可以调整其他表(子表)来将country_sig字段分成两个'国家'和'代码'的列,但不会工作,因为Django不支持复合主键。

编辑: 其实我在tastypie中实施它,我希望tastypie认为它好像是一个真正的领域。这将解决我真正的问题。

+0

我不知道你的意思引用对方什么。你想动态添加这个组合字段,以便你可以从子表查询吗? – RickyA 2012-07-12 19:46:19

+0

,因为我在tastypie中实现它(编辑问题) – pranavk 2012-07-12 20:02:47

+0

所以你想要tasypie在父资源中输出这个组合字段? – RickyA 2012-07-12 20:04:46

回答

0

也许不使用标准tasypie ModelResources的,但写自己的资源:

class DictWrapper(object): 
    ''' 
    to be used as generic tastypie resource object 
    ''' 
    def __init__(self, initial=None): 
     self.__dict__['_data'] = {} 

     if hasattr(initial, 'items'): 
      self.__dict__['_data'] = initial 

    def __getattr__(self, name): 
     return self._data.get(name, None) 

    def __setattr__(self, name, value): 
     self.__dict__['_data'][name] = value 

    def to_dict(self): 
     return self._data 

class ParentResource(Resource): 
    def get_object_list(self, request):   
     ret = [] 
     for parent in Parent.objects.all(): 
      ret.append(DictWrapper({"country_sig":"{0}.{1}".format(parent.country, parent.code}))) 
     return return 

    def obj_get_list(self, request=None, **kwargs):  
     return self.get_object_list(request)