0

2 つのテーブルがあります (たとえば、親と子)。親と子が外部キーを使用して相互にリンクするようにします。子テーブルには 2 つのフィールドがあり、そのうちの 1 つは「country_sig」です。この country_sig は、実際には'country'および'code'という名前の親テーブルの2 つのフィールドを結合して作成されます。例: 国が「IN」でコードが「15」の場合、country_sig はIN.15です。

親テーブルのdjangoモデルの作成中に、 「country」と「code」から派生したこのフィールドcountry_sigを自動的に作成して、子テーブルを参照できるようにしたいと考えています。

PS : 親テーブルは非常に大きいため、これら 2 つのフィールドから派生したデータベースに別のフィールドを作成したくありませんが、他のテーブル (子テーブル) を微調整して、country_sig フィールドを「country」で 2 つの列に分割できます。 ' および 'code' ですが、django は複合主キーをサポートしていないため、機能しません。

編集:実際にtastypieで実装していますが、tastypieに実際のフィールドであるかのように考えてもらいたいです。これは私の本当の問題を解決するでしょう。

4

1 に答える 1

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)
于 2012-07-12T20:13:18.503 に答える