2016-04-06 2 views
0

das Modell wie folgt:django Modell Aggregat Fliter von diffrent Zeit

class UserInfo(models.Model): 

    login_id=models.CharField(db_column='login_id',max_length=50,unique=True) 
    passport_name=models.CharField(db_column='passport_name',max_length=50) 
    identity_id=models.CharField(db_column='identity_id',max_length=50,null=True) 
    company=models.CharField(db_column='company',max_length=50,null=True) 

    ctime = models.DateTimeField(db_column='ctime', blank=True, null=True) 
    utime = models.DateTimeField(db_column='utime', blank=True, null=True) 
    class Meta: 
     managed = True 
     db_table = "user_info" 


class UserViewpoint(models.Model): 
    title=models.CharField(db_column='title',max_length=100) 
    userid=models.ForeignKey(UserInfo,db_column='userid',to_field='login_id',related_name='rel_tg_viewpoint') 
    ctime = models.DateTimeField(db_column='ctime', blank=True, null=True) 
    utime = models.DateTimeField(db_column='utime', blank=True, null=True) 
    class Meta: 
     managed = True 
     db_table = "user_viewpoint" 



class UserRelationHistory(models.Model): 
    """docstring for TgRelationHistory""" 

    adviser_id=models.ForeignKey(UserInfo,to_field='login_id',db_column='adviser_id',related_name='rel_tg_relation_history') 
    common_id=models.CharField(db_column='common_id',max_length=100) 
    ctime = models.DateTimeField(db_column='ctime', blank=True, null=True) 
    utime = models.DateTimeField(db_column='utime', blank=True, null=True) 
    class Meta: 
     managed = True 
     db_table = "user_relation_history" 

i wie diese erhalten möchten, führen: user_id, count_viewpoint, count_relation_new, count_relation_utilnow

count_realtion_new: neue realtions wenn user_relation.ctime in (Anfang, Ende)

count_relation_utilnow: Gesamtreal wo user_relation.ctime < Ende

Antwort

0

Diese Dokumentation unter folgendem Link auschecken: https://docs.djangoproject.com/en/1.9/topics/db/

Mit Django ORM können Sie alles ausführen, was Sie mit einer relationalen Datenbank tun können.

+0

ich habe bereits die Dokumentation lesen, aber keine Möglichkeit, zu implementieren wie diese, wählen ui.login_id , zählen (distinct r_current.common_id) als count_realtion_new , zählen (distinct r_current.common_id) als count_relation_utilnow von user_info ui links finden beitreten (wählen * aus user_relation_history, wobei ctime = thatday) r_current auf ui.login_id = r_current.adviser_id links beitreten (wählen * aus user_relation_history wobei ctime <= thday) urh auf ui.login_id = urh.adviser_id group von ui.login_id . danke –

+0

Was ist TgInfo in Ihrem Fremdschlüssel hier. Ich kann das Modell nicht sehen. Überprüfen Sie bitte diese Beschreibung: https://docs.djangoproject.com/de/1.9/ref/models/fields/#django.db.models.ForeignKey – hellboy

+0

oh entschuldigung! TgInfo ist falsch, das Recht ist UserInfo, ich habe es behoben –