Django,访问父级';多对一关系中的s域和方法

Django,访问父级';多对一关系中的s域和方法,django,python-3.x,Django,Python 3.x,我下面的例子仅供演示,作者和书籍之间的关系是一对多的,每本书只能由一位作者撰写 假设我为作者创建了一个记录,然后创建了一本该作者写的书。当我想更新这本书的详细信息时,我也想获得作者的年龄,并获得对书籍模板中作者模型的任何字段的访问权限 {{form.author}将返回作者姓名,我尝试了{{form.author.age} 和{form.author.find_age}都没有成功 我的真实例子涉及一套书的形式,但我认为把它简单化为一本书,如下所示,将更容易得到答案 型号: class Autho

我下面的例子仅供演示,作者和书籍之间的关系是一对多的,每本书只能由一位作者撰写

假设我为作者创建了一个记录,然后创建了一本该作者写的书。当我想更新这本书的详细信息时,我也想获得作者的年龄,并获得对书籍模板中
作者
模型的任何字段的访问权限

{{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__'        
<div class="col-sm-3">
    {{form}}
</div>   
查看:

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__'        
<div class="col-sm-3">
    {{form}}
</div>   
模板:

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__'        
<div class="col-sm-3">
    {{form}}
</div>   

{{form}}

您可以使用
form.instance

{{form.instance.author.age}}
我因错过“实例”而损失了2天时间!!谢谢你,萨坦德拉。