1

These are my 2 Django models:

class Brand(models.Model):
    brand_no = models.CharField(max_length=100, unique = True)
    class Meta:
        db_table = 'brand'    
class BrandWhereUsed(models.Model):     # Brand is a component of parent brand
    brand = models.ForeignKey(Brand, related_name="where_used", on_delete=models.CASCADE)
    parent_brand = models.ForeignKey(Brand, on_delete=models.PROTECT)
    class Meta:
        constraints = [
                models.UniqueConstraint(fields=['brand', 'parent_brand '], name='brand_parent')
                ]
       db_table = 'brand_where_used'

And I would like to do convert this SQL query to Django ORM, not raw query:

SELECT t1.id, t1.brand_no
, GROUP_CONCAT(t2.parent_brand_id) AS where_used
, GROUP_CONCAT(t3.item_no) AS where_used_brand_no 
FROM brand AS t1 
LEFT OUTER JOIN brand_where_used AS t2 ON (t2.item_id = t1.id) 
LEFT OUTER JOIN brand AS t3 ON (t3.id = t2.parent_brand_id) 
GROUP BY t1.id

I tried this thread :GROUP_CONCAT equivalent in Django . But seems like it generated incorrected result query.

Could you please help me on this?

tom
  • 33
  • 4
  • why not us django-mysql lib, it has a Group_concat function builtin https://django-mysql.readthedocs.org/en/latest/aggregates.html#django_mysql.models.GroupConcat – Nishant Patel May 04 '21 at 05:34

0 Answers0