0

I have two model, making unique key column as foreign key to other table.

class Employee(models.Model):
    EmployeeId = models.IntegerField(unique=True)
    Employee_Name = models.CharField(max_length=100)

class Release(models.Model):
    EmployeeId = models.ForeignKey(Employee, on_delete=models.CASCADE, to_field="EmployeeId") 

when i am trying join query it is doing join on primary key column on Employee table.

below is the join query I am expecting join on Employee.EmployeeId =Release.EmployeeId

r=Release.objects.all().select_related('EmployeeId')

but above query gives

print(str(r.query))

Output:

'SELECT "app_release"."id", "app_release"."EmployeeId_id", "app_employee"."id", "app_employee"."EmployeeId", "app_employee"."Employee_Name" 
FROM "app_release" INNER JOIN "app_employee" 
ON ("app_re
lease"."EmployeeId_id" = "app_employee"."id")' 

which i don't want i.e, instead of

ON ("app_release"."EmployeeId_id" = "app_employee"."id")'

i want

ON ("app_release"."EmployeeId_id" = "app_employee"."EmployeeId")'

1 Answers1

3

So you need to declare Employee.EmployeeId as primary key and remove unique key because Primary key is unique itself. try this code..in Employee Model

EmployeeId = models.IntegerField(primary_key=True)

if you do not want to modify the table,then you can use raw query,please refer the link below

raw query in Django

please let me know whether it is working or not