Django:从多个表中获取特定列

Django:从多个表中获取特定列,django,django-models,Django,Django Models,我需要从多个表中获取列,如何实现这一点 UserLog +------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+----------+------+-----+---------+----------------+ | log_id | int(11)

我需要从多个表中获取列,如何实现这一点

UserLog


+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| log_id     | int(11)  | NO   | PRI | NULL    | auto_increment |
| time       | datetime | NO   |     | NULL    |                |
| ip_address | char(15) | YES  |     | NULL    |                |
| event_id   | int(11)  | NO   | MUL | NULL    |                |
| user_id    | int(11)  | NO   | MUL | NULL    |                |
+------------+----------+------+-----+---------+----------------+

Events


+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| event_id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| description | varchar(200) | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
这是我的
models.py

class Events(models.Model):
        event_id = models.AutoField(primary_key=True,verbose_name="Event id")
        description = models.CharField(max_length=200,verbose_name="Description")

        def __unicode__(self):
                return u"%d : %s" % (self.event_id, self.description)

class UserLog(models.Model):
        log_id = models.AutoField(primary_key = True)
        user = models.ForeignKey(User)
        event = models.ForeignKey(Events,verbose_name = "event")
        time = models.DateTimeField(default=datetime.now,blank=True)
        ip_address = models.IPAddressField(null=True)


        def __unicode__(self):
                return u"%s (%s): %s" % (self.log_id, self.user, self.event)
特别是我想做的事
选择日志id、时间、用户id、事件id、用户日志中的描述、事件,其中UserLog.event\u id=Events.event\u id

我尝试了
UserLog.objects.filter(event\u id\u event\u id).值('log\u id','time','user\u id','event\u id','description')
。但它说没有这样的领域

我的models类中有什么需要更改的吗?

如下使用:

UserLog.objects.filter(event_id__event_id=1).select_related('event').values('log_id','time','user_id','event_id', 'event__description')
试试这个:

UserLog.objects.filter(event_id=1).values('log_id', 
                                          'time',
                                          'user_id',
                                          'event_id', 
                                          'event__description')
或者,您可以使用:

然后,您将获得
UserLog
对象,并预先获取事件,这样您就可以访问事件而无需触发另一个查询

(同样,标准命名约定是调用模型
事件
,而不是
事件

country\uu countryname
中,当您定义如下关系时,country是
name
字段

city =  models.ForeignKey(City, on_delete=models.CASCADE)
state =  models.ForeignKey(State, on_delete=models.CASCADE)
country =  models.ForeignKey(Country, on_delete=models.CASCADE)
countryname
country
表中的表字段,并且
州\州名称
城市\城市名称

其他字段来自
Studentinfo
模型

这将给我以下结果


你能发布你的django模型代码吗?哦,那应该是
事件。更新!太快了!我尝试了这个
UserLog.objects.filter(event\u id\u event\u id=1)。选择相关('description').values()
,我得到了
[{'log\u id':4L,u'event\u id':1L,'ip\u address':u'10.100.32.142',u'user\u id':2L,'time':datetime.datetime(2014,9,25,21,29,28,tzinfo=)}
“说明”字段未显示!您是对的,我试图错误地访问其他表中的字段。伙计们,您能帮我解决这个问题吗?够蠢了,我忘了通过
foreignkey\u字段访问其他表字段。
。谢谢:)
dataStudent =  Studentinfo.objects.select_related().values(
    'country__countryname',
    'state__statename', 
    'city__cityname',
    'id','studentname',
    'rollno',
    'email',
    'phoneno')
city =  models.ForeignKey(City, on_delete=models.CASCADE)
state =  models.ForeignKey(State, on_delete=models.CASCADE)
country =  models.ForeignKey(Country, on_delete=models.CASCADE)