2015-01-07 2 views
1

Я давно искал ответа на этот вопрос и еще не нашел его. Надеюсь, вы можете мне помочь.обратный внешний ключ - выберите из двух таблиц

У меня есть две модели:

class UsedEverywhere(models.Model): 
    fk_OtherThing = models.ForeignKey(OtherThing) 
    ...(many more fks) 

class NewThing(models.Model): 
    fk_UsedEverywhere(UsedEverywhere) 
    newThingMember = models.IntegerField() 

Я просто хочу, чтобы присоединиться к этим двум таблицам. Было бы довольно легко, если я мог бы просто сделать что-то вроде

x = NewThing.objects.get() 
x.fk_UsedEverwhere.fk_OtherThing ... 

проблема, модель UsedEverywhere уже используется во многих многих местах на протяжении всей моей базы коды, и если я хочу, чтобы положить «NewThing» как ' родитель из UsedEverywhere, мне придется обновлять много и много кода, так существующий код, который имеет что-то вроде:

x = x.filter(fk_OtherThing=val) 

бы, чтобы изменить

x = x.filter(fk_UsedEverywhere.fk_OtherThing=val) 

и я tryi чтобы избежать этого. Мои отношения SQL настроены именно так, как я их хочу, я не хочу давать UseEverywhere столбец для NewThing.

Я хочу сделать что-то вроде:

x = UsedEverywhere.objects.join(NewThing.fk_UsedEverywhere) 
member = x.newThingMember 

ответ