두 개의 클래스가 있으며 가능한 한 효율적으로 필드를 한 필드에서 다른 필드로 이동하려고합니다. 데이터베이스가 크기 때문에 Django 내에서 SQL 업데이트 쿼리 또는 직접 SQL 쿼리를 사용할 수 있다면 이상적입니다 . 내 데이터베이스는 PostgreSQL입니다.
Class Order(models.Model):
name = models.TextField(null=True, blank=True)
address = models.ForeignKey(Address, on_delete=models.PROTECT)
Class Address(models.Model):
name = models.TextField(null=True, blank=True)
이 작업을 수동으로 수행 할 수 있다는 것을 알고 있지만 다음과 같이 SQL 업데이트 쿼리를 실행할 수 있기를 바랐습니다.
Order.objects.all().update(address__name=F('name'))
하지만 업데이트 명령을 사용하여 외래 키 필드를 업데이트 할 수 없습니다. 다음을 작성하는 것과는 반대로 Django 또는 SQL에서 직접 대안에 대한 제안을 주시면 감사하겠습니다.
for order in Order.objects.all():
address = order.address
address.name = order.name
address.save()
이것은 어떤가요:
orders = Order.objects.select_related('address')
addresses = []
for order in orders:
address = order.address
address.name = order.name
addresses.append(address)
Address.objects.bulk_update(addresses, ['name'])
2 개의 SQL 쿼리 만 만들어야합니다.
그러나 하나의 주소가 여러 주문에 첨부 될 수 있기 때문에 잘 정의되지 않았습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다