Python 如何查询Django
你好,我有一个问题,我不知道如何解决它。我的应用程序中有三种型号:Python 如何查询Django,python,django,django-models,Python,Django,Django Models,你好,我有一个问题,我不知道如何解决它。我的应用程序中有三种型号: class Hecho(models.Model): codigo = models.CharField(max_length=1) hecho = models.CharField(max_length=100) class Beneficiario(models.Model): tipoDocumento = models.CharField(max_length=150) numeroDo
class Hecho(models.Model):
codigo = models.CharField(max_length=1)
hecho = models.CharField(max_length=100)
class Beneficiario(models.Model):
tipoDocumento = models.CharField(max_length=150)
numeroDocumento = models.IntegerField()
nombre = models.CharField(max_length=150)
class HechoBeneficiario(models.Model):
beneficiario = models.ForeignKey(Beneficiario)
hecho = models.ForeignKey(HechoVictimizante)
如您所见,HechoBeneficiario模型与其他两个模型相关联。
我的问题是使用受益人模型,我可以得到模型Hecho并在模板中绘制它吗?在您的情况下更好地使用字段。您的模型将如下所示:
class Beneficiario(models.Model):
tipoDocumento = models.CharField(max_length=150)
numeroDocumento = models.IntegerField()
nombre = models.CharField(max_length=150)
class Hecho(models.Model):
codigo = models.CharField(max_length=1)
hecho = models.CharField(max_length=100)
beneficiarios = models.ManyToManyField(Beneficiario, related_name='hechos')
beneficiarios = Beneficiario.objects.prefetch_related('hechos')
for beneficiario in beneficiarios:
print(beneficiario.hechos.all())
您可以使用以下代码获取受益人的所有hechos:
hechos = beneficiario_object.hechos.all()
beneficiarios = hecho_object.beneficiarios.all()
并使用以下代码获取hecho的所有受益人:
hechos = beneficiario_object.hechos.all()
beneficiarios = hecho_object.beneficiarios.all()
但您应该知道,每次尝试访问多对多字段时,django都会访问数据库。为了防止出现这种情况,您可以在检索所有受益人模型时使用,如下所示:
class Beneficiario(models.Model):
tipoDocumento = models.CharField(max_length=150)
numeroDocumento = models.IntegerField()
nombre = models.CharField(max_length=150)
class Hecho(models.Model):
codigo = models.CharField(max_length=1)
hecho = models.CharField(max_length=100)
beneficiarios = models.ManyToManyField(Beneficiario, related_name='hechos')
beneficiarios = Beneficiario.objects.prefetch_related('hechos')
for beneficiario in beneficiarios:
print(beneficiario.hechos.all())
它只会命中数据库2次。到目前为止,您尝试过什么?你到底想问什么?你读过关于“进行查询”的文档了吗?你想做什么?有需要的输出吗?请编辑您的问题并正确提问“如何查询django”的第一个谷歌结果: