Django,在多对一关系中访问父级的字段和方法

时间:2018-06-20 14:47:37

标签: django python-3.x

下面仅以演示为例,作者与书籍之间的关系是一对多的,每本书只能由一位作者撰写。

比方说,我已经为作者创建了一条记录,然后创建了由该作者编写的书。当我想更新《图书》的详细信息时,我也希望获得作者的年龄,并可以访问本书模板中任何Connection.main(Connection.java:15)模型的文件。

Author将返回作者姓名,我尝试过{{form.author}}  和{{form.author.age}}都没有成功。

我的真实示例涉及书籍的形式集,但是我认为将其简化为一本书,如下所示将更容易获得答案。

型号:

{{form.author.find_age}}

查看:

class Author(models.Model):
  name = models.CharField(max_length=300)
  age = models.DecimalField(max_digits=3, decimal_places=1, default=3.0, blank = True )

  def __str__(self):
    return self.name   

  def find_age(self):
    return self.age     

class Book(models.Model):
  author = models.ForeignKey(Author, on_delete=models.PROTECT)
  title = models.CharField(max_length=300)
  publish = models.CharField(max_length=300)

  def __str__(self):
    return self.title       

模板:

class BookCreate(CreateView):
   model = Book
   fields = '__all__'
   success_url = reverse_lazy('books-list')

class BookUpdate(UpdateView):
   model = Book
   success_url = reverse_lazy('books-list')
   fields = '__all__'    

class AuthorCreate(CreateView):
   model = Author
   fields = '__all__'
   success_url = reverse_lazy('authors-list')

class AuthorUpdate(UpdateView):
   model = Author
   success_url = reverse_lazy('authors-list')
   fields = '__all__'        

1 个答案:

答案 0 :(得分:0)

您可以使用form.instance

访问与表单关联的模型实例。
{{form.instance.author.age}}