Queryset:按订单中的附件返回说明(Django)
考虑下一个例子:Queryset:按订单中的附件返回说明(Django),django,django-templates,Django,Django Templates,考虑下一个例子: class Vehicle(models.Model): vehicle = models.CharField(_('veículo'), max_length=50, unique=True) price = models.DecimalField(_(u'preço'), max_digits=8, decimal_places=2) kit_fabric = models.ForeignKey( "Kit", verbose_nam
class Vehicle(models.Model):
vehicle = models.CharField(_('veículo'), max_length=50, unique=True)
price = models.DecimalField(_(u'preço'), max_digits=8, decimal_places=2)
kit_fabric = models.ForeignKey(
"Kit", verbose_name=u'kit de fábrica', related_name='vehicle_kit')
class Accessory(models.Model):
accessory = models.CharField(_(u'accessório'), max_length=50)
price_accessory = models.DecimalField(
_(u'preço'), max_digits=8, decimal_places=2)
class Kit(models.Model):
kit = models.CharField(max_length=50)
class KitDetail(models.Model):
kit = models.ForeignKey("Kit", verbose_name='kit', related_name='kit_det')
accessory = models.ForeignKey(
"Accessory", verbose_name=u'accessório', related_name='accessory_kit')
quantity_accessory = models.PositiveIntegerField(_('quantidade'))
def __str__(self):
return str(self.kit)
class Ordered(TimeStampedModel):
customer = models.ForeignKey("Customer", verbose_name='cliente')
employee = models.ForeignKey("Employee", verbose_name=u'funcionário')
vehicle = models.ForeignKey("Vehicle", verbose_name=u'veículo')
kit_optional = models.ForeignKey("Kit", verbose_name='kit opcional')
dealership = models.ForeignKey(
"Dealership", verbose_name=u'concessionária')
kiosk = models.ForeignKey("Kiosk", verbose_name='quiosque')
status = models.CharField(max_length=2, choices=status_list, default='p')
如何在订单中按附件返回描述
也就是说,在我的模板中,我需要:
{{ object.kit_optional.accessory }}
{{ object.kit_optional.price_accessory }}
{{ object.kit_optional.quantity_accessory }}
否则,我尝试其他代码,但不工作
我试着
$。/manage.py shell
>>>从new_way.core.models导入订购、客户、KitDetail
>>>已订购。套件\可选。套件\详细信息全部()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“ordered”
>>>已订购。套件\可选。套件\详细信息全部()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“ReverseSingleRelatedObjectDescriptor”对象没有属性“kit_det”
但不是工作
我不说怎么做。ForeignKey的每个定义都添加了一个反向关系,可以使用
相关的\u name
来访问它(默认情况下,它是$model\u name\u lowercase$\u set
)。因此,您可以使用以下代码访问所需的对象:
ordered.kit_optional.kit_det.all() # Returns all KitDetail objects, related to oredered.kit_optional
您可以对其进行迭代,并为每个KitDetail
检索相关的附件
对象集:
{% for kit_detail in ordered.kit_optional.kit_det.all %}
{{ kit_detail.quantity_accessory }}
{% for accessory in kit_detail.accessory_kit.all %}
{{ accessory.accessory }}
{{ accessory.price_accessory }}
{% endfor %}
{% endfor %}
只是澄清一下:您有一个订购的
对象,您想从附件
模型中检索附件
和价格(附件
字段,从附件
模型中检索数量(附件
字段?请注意,kitdeail
与Kit
模型有多对一关系,因此,每个Kit
对象可能有多个kitdeail
对象(与附件
模型相同)。@很快你有什么建议我再次编辑我的问题,请参阅shell
中的try code,你以前没有和Django一起工作过。你可以试着阅读。提示:您可以使用ModelName.objects.first()
访问模型的第一个对象,有时我会忘记基本知识;)
{% for kit_detail in ordered.kit_optional.kit_det.all %}
{{ kit_detail.quantity_accessory }}
{% for accessory in kit_detail.accessory_kit.all %}
{{ accessory.accessory }}
{{ accessory.price_accessory }}
{% endfor %}
{% endfor %}