【发布时间】:2017-09-22 08:18:13
【问题描述】:
我正在努力寻找如何从表亲相关模型中获取数据的文档或示例。
如果模型看起来像这样:
class Part(models.Model):
name = models.CharField(max_length=550)
class Quantity(models.Model):
quantity = models.DecimalField(max_digits=10, decimal_places=2)
part = models.ForeignKey('Part', related_name='quantity_part')
stockarea = models.ForeignKey('StockArea', related_name='quantity_stockarea')
class Stock(models.Model):
name = models.CharField(max_length=550)
class StockArea(models.Model):
area = models.CharField(max_length=550)
stock = models.ManyToManyField(Stock, related_name='stockarea_stock')
def __str__(self):
return self.area
在视图中我得到这样的部分:
def details(request, part_id):
part = get_object_or_404(Part, pk=part_id)
context = {
'part': part,
}
return render(request, 'part/details.html', context)
最终模板尝试显示数据:
{% for a in part.quantity_part.all %}
{{ a.quantity }} pcs
Find part in area: {{ a.stockarea }}
in stock: {{ part.stockarea.stock.name }}
{% endfor %}
您知道我是如何尝试获取股票名称的。我不知道如何能够掌握股票的名称。我从那部分那里有一条路。
零件有一个related_name到名为quantity_park的数量模型。在模型 Quantity 中,我与模型 StockArea 有关系。从那里我与模型 Stock 有关系。
非常感谢您的指导 =)
也许我完全是在倒退。也许我一开始就错误地定义了模型。我习惯了 MySQL,所以这对我来说很新。
【问题讨论】:
-
由于 stock 是您的 stockarea 模型中的多对多字段,您需要遍历 stockarea 中的所有股票以获取它们的名称。像这样的东西:
{% for stock in a.stockarea.stock.all %} in stock: {{ stock.name }} {% endfor %} -
@anupsabraham 你是对的。这可能是我很愚蠢的。一个area当然只与一个stock相关。
-
那么最好将该字段更改为onetoone或foreignkey。
标签: python django database django-models