如何使用queryset在django中的模型中打印外键

时间:2017-11-21 20:01:57

标签: django-models django-queryset

Models.py

class tag_table(models.Model):
    tag_id = models.IntegerField(unique=True)
    book_tag = models.CharField(max_length=50,primary_key=True)
    def __unicode__(self):
        return self.book_tag

class Book(models.Model):
    book_id = models.IntegerField(primary_key = True)
    book_author = models.CharField(max_length=50,default='')
    book_tag = models.ForeignKey(tag_table ,on_delete=models.CASCADE,default='')
    def __unicode__(self):
        return (self.book_author,self.book_tag)

我在交互式shell(django)中使用查询

  
    
      

Book.objects.all()[0] .book_tag

    
  

Traceback(最近一次调用最后一次):   文件"",第1行,in   文件" C:\ Python27 \ lib \ site-packages \ django-1.10.3-py2.7.egg \ django \ db \ models \ fields \ related_descriptors.py",第1行  在获取     rel_obj = qs.get()   文件" C:\ Python27 \ lib \ site-packages \ django-1.10.3-py2.7.egg \ django \ db \ models \ query.py",第385行,获取     self.model._meta.object_name DoesNotExist:tag_table匹配查询不存在。

如何访问外键" book_tag"通过使用模型的对象列表" Book"

1 个答案:

答案 0 :(得分:1)

您的数据库架构不正确,因为您在Django中使用MVC,因此您不需要手动关联数据库中的表,因为它已过时且有点困难。

这是您的假设模型,我希望它可以提供帮助

class Book(models.Model):
      author = models.ForeignKey(Author)
      tags = models.ForeignKey(Book_Tags)
      def __unicode__(self):  ###__str__() in python3
          return self.author.name
  1. 作者和Book_Tags是您应该在
  2. 之前定义的另外两个模型
  3. 不需要id。 Django会自动声明它
  4. 您可以在编写代码时使用Django web Site。它非常有用

    例如,为了编写模型,请从here

    获取帮助