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天时间!!谢谢你,萨坦德拉。