关于python:在_meta.get_fields()之后调用模板中的对象

Call object in template after _meta.get_fields()

所以我有很多与父模型有关的模型。 像这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Part(models.Model):
    name = models.CharField(max_length=550)

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')

class Si(models.Model):
    name = models.CharField(max_length=50)
    si_unit = models.CharField(max_length=10)

class Quantity(models.Model):
    quantity = models.DecimalField(max_digits=10, decimal_places=2)
    si = models.ManyToManyField(Si, related_name='quantity_si')
    part = models.ManyToManyField(Part, related_name='quantity_part')
    stockarea = models.ManyToManyField(StockArea, related_name='quantity_stockarea')

class Image(models.Model):
    image = models.FileField()
    part = models.ManyToManyField(Part, related_name='image_part')

当我想要零件的详细视图时,我想显示零件名称,数量,图像,库存面积等。

因此,对于详细视图,viw看起来像这样

1
2
3
4
5
6
7
def details(request, part_id):
    part = get_object_or_404(Part, pk=part_id)
    part = part._meta.get_fields()
    context = {
        'part': part,
    }
    return render(request, 'part/details.html', context)

尝试调用模板中的所有内容时会出现问题。

我可以只调用一部分来显示对象:{{ part }}

但是我希望能够调用零件的名称,例如:{{ part.name }}

我知道这很麻烦,因为相关字段也称为"名称"。 所以我以为我可以这样称呼它:{{ part.Part.name }}
或当我想显示数量时:{{ part:Quantity.quantity }}

没有任何工作。 所以我的问题是,如何调用对象中的数据?

谢谢!


您获得的part对象是一个模型实例。 您可以将其用作模型实例。 所以这是可行的:

1
2
3
{% for image_object in part.image_part.all %}
    <img src="{{ image_object.image.url }}" />
{% endfor %}

也就是说,删除此行后:

1
part = part._meta.get_fields()

没有任何理由这样做。 需要访问_meta的情况很少。