我有这两种型号:
class Periodo(models.Model):
# id usato per identificare i documenti
# periodo rilevato in fattura
data_i_p = models.DateField('data inizio', blank=True)
data_f_p = models.DateField('data fine ', blank=True)
mc_p = models.DecimalField('mc', max_digits=7, decimal_places=0, blank=True, default=0)
idfatt = models.ForeignKey(FattAqp, verbose_name="fattura AQP", on_delete=models.CASCADE, related_name='periodo_rel')
descr = models.CharField('descrizione', max_length=50)
objects = models.Manager()
class Meta:
verbose_name = 'Periodo'
class DettFAqp(models.Model):
imponibile = models.DecimalField('imponibile', max_digits=8, decimal_places=2, default=0)
iva = models.DecimalField('%IVA', max_digits=4, decimal_places=2, default=10)
mc = models.DecimalField('qtà (gg/mc)', max_digits=7, decimal_places=0, blank=True, default=0)
voce = models.ForeignKey(VoceAqp, verbose_name="metodo di ripart.", on_delete=models.CASCADE)
periodo = models.ForeignKey(Periodo, verbose_name="Periodo in fattura", on_delete=models.CASCADE,
related_name='dettfaqp', help_text=u"periodo cui la voce appartiene")
rigo = models.DecimalField('rigo', max_digits=2, decimal_places=0, default=0, help_text=u"rigo di fattura")
当我尝试访问与父对象相关的集合时,我会出现以下错误:
>>> p=Periodo.objects.get(pk=2)
>>> p
<Periodo: consumo accertato in 344 gg>
>>> p.dettfaqp_set.all()
Traceback (most recent call last):
File "<input>", line 1, in <module>
p.dettfaqp_set.all()
AttributeError: 'Periodo' object has no attribute 'dettfaqp_set'
有什么建议吗
您已将
DettFAqp.periodo
的related_name
设置为"dettfaqp"
。您应该使用该属性p.dettfaqp.all()
您指定了一个^{} [Django-doc]:
因此,这意味着反向关系不再是
dettfaqp_set
,而是dettfaqp
,因此您可以通过以下方式访问此关系:如果您正在使用
related_name
属性,则不需要在调用结束时包含\u set:只需使用以下命令:它应该会起作用
只有在尚未为
ForeignKey
指定related_name
时才使用\u set,在您的示例中,它将是:相关问题 更多 >
编程相关推荐