2015-04-14 2 views
0

есть две таблицы:как позволить Джанго достичь внутреннего соединения

class TBLUserProfile(models.Model): 
    userid = models.IntegerField(primary_key=True) 
    relmusicuid = models.IntegerField() 
    fansnum = models.IntegerField() 

class TSinger(models.Model): 
    fsinger_id = models.IntegerField() 
    ftbl_user_profile = models.ForeignKey(TBLUserProfile, db_column='Fsinger_id') 

Я хочу, чтобы получить Цингер информацию, а затем заказ на TBLUserProfile.fansnum, я знаю, как написать SQL-запрос: select * from t_singer INNER JOIN tbl_user_profile ON (tbl_user_profile.relmusicuid=t_singer.Fsinger_id) order by tbl_user_profile.fansnum, но я не» t хотите использовать функцию модели raw. relmusicuid не является первичным ключом, иначе я могу использовать ForeignKey, чтобы он работал. Как я могу использовать Джанго модель для достижения этой цели

+0

Я не понимаю вашего вопроса. Кроме того, в вашей структуре модели, по-видимому, есть некоторые недостатки. –

+0

Я хочу получить информацию о TSinger и заказывать фанаты TBLUserProfile, вот и все. –

ответ

0

Вы можете сделать так:

Tsinger.objects.all().order_by('ftbl_user_profile__fansnum') 

Для получения информации о Джанго JOIN: https://docs.djangoproject.com/en/1.8/topics/db/examples/many_to_one/

+0

Я попробовал это, но этот код переводит на sql - это 'select * from t_singer INNER JOIN tbl_user_profile ON (tbl_user_profile.userid = t_singer.Fsinger_id) order by tbl_user_profile.fansnum', потому что relmusicuid не является primary_key, его доза не работает –

+0

I не понимаю ... Я думаю, что ваша модель не соответствует тому, что вы хотите. Не могли бы вы объяснить, что именно вы хотите сделать? – Ikarys

+0

просто введите, я хочу достичь sql: 'select * from t_singer INNER JOIN tbl_user_profile ON (tbl_user_profile.relmusicuid = t_singer.Fsinger_id) order by tbl_user_profile.fansnum', это означает, что только когда' tbl_user_profile.relmusicuid равно t_singer.Fsinger_id' , покажите результат заказа. На вашем пути sql будет, когда 'tbl_user_profile.userid равен t_singer.Fsinger_id', почему это происходит, так как relmusicuid не является первичным ключом, если relmusicuid является первичным ключом в моделях, ваш код работает, но он не является первичным ключ. –

Смежные вопросы