Django Queryset不显示外键值

时间:2014-06-17 20:58:07

标签: python django django-models

当我尝试通过Django querySet访问外键值时,我遇到了一些问题。 我的模特是:

class Server(models.Model):
    server_id = models.AutoField(primary_key=True)
    mnemonic = models.CharField(max_length=30, unique=True)
    active = models.BooleanField(default=True)
    server_status = models.ForeignKey(Status, default=4)

    def __unicode__(self):
        return unicode(self.mnemonic)

class Status(models.Model):
    status_id = models.AutoField(primary_key=True)
    status_code = models.CharField(max_length=100)

    def __unicode__(self):
        return unicode(self.status_code)

当我执行下一个代码时,所有运行都正常,我可以获得FK相关值。

>>> print servers.models.Server.objects.get(server_id=3).server_status
Unmanagmed - Reacheable

但是当我执行查询集时,我无法获得外键关联值:

>>> servers.models.Server.objects.filter(server_id=3).values("server_status")
[{'server_status': 2L}]

我正在使用django 1.6.1。

任何想法如何获得FK值?

2 个答案:

答案 0 :(得分:0)

您应该修改Server类,使其为ForeignKey状态:

class Server(models.Model):
    status = models.ForeignKey('Status')
    # ...

答案 1 :(得分:0)

我没有在你的模型中看到任何外键。

您需要在模型状态

中建立关系
class Status(models.Model):
    status_id = models.AutoField(primary_key=True)
    status_code = models.CharField(max_length=100)
    server = models.ForeignKey(Server,
                               verbose_name='Server',
                               help_text='Select Server',
                               on_delete=models.PROTECT)

   def __unicode__(self):
       return unicode(self.status_code)
相关问题