Django 如何从其他模型访问模型字段?这可能吗?
假设我有两个模型Django 如何从其他模型访问模型字段?这可能吗?,django,python-3.x,django-models,django-model-field,Django,Python 3.x,Django Models,Django Model Field,假设我有两个模型 class Project(models.Model): project_number = models.Charfield(primary_key=True, max_length=10) project_title = models.Charfield(max_length=100) total_cost = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=Tr
class Project(models.Model):
project_number = models.Charfield(primary_key=True, max_length=10)
project_title = models.Charfield(max_length=100)
total_cost = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
class FieldChangeOrder(models.Model):
project = models.FoereignKey('Project', on_delete=models.CASCADE)
funding_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
percentage_of_funding = ( funding_amount / total_cost ) * 100
如何从FieldChangeOrder模型中访问项目模型中的总成本,以计算拨款百分比字段的值
我尝试了以下方法
class Project(models.Model):
project_number = models.Charfield(primary_key=True, max_length=10)
project_title = models.Charfield(max_length=100)
total_cost = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
class FieldChangeOrder(models.Model):
project = models.FoereignKey('Project', on_delete=models.CASCADE)
funding_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
@property
def percentage_of_funding(self):
return (self.funding_amount/self.project.total_cost) * 100
但是^FieldChangeOrder对象没有属性“project”时出错
我是django的新手,现在只是涉猎一下。非常感谢任何帮助简单地说,您可以使用点符号访问外键上的字段: 例如:
field_changer_order = FieldChangeOrder.objects.get(pk=1)
project_total_cost = field_changer_order.project.total_cost
这两个模型之间存在外键关系。关于如何访问其他相互关联的模型中的数据,您做了哪些研究?@dfundako我刚刚用我的尝试更新了总结。请看一看。@AravindMarthinei您编辑的版本应该可以正常工作,您是否在创建模型后忘记了
make migrations
和migrate
?@PedramParsian出于某种原因,make migrations返回时未检测到任何更改!可能是因为此更改实际上并没有在表中创建列,而只是使用其他模型中的字段?makemigrations
仅从已安装的应用程序中获取模型并应用它们。您是否在设置.py中的已安装的应用程序中包含应用程序名?