I’m trying to join 3 tables with ForeignKey but it returns Null values. I’m using select related and also I tried Insight.objects.all() but both are not working.
Here are my models:
class schedule(models.Model): login_id = models.CharField(primary_key=True,max_length=20) agent_name = models.CharField(max_length=100, blank=True, null=True) team = models.CharField(max_length=100, blank=True, null=True) class place_no(models.Model): place_id = models.CharField(max_length=50, blank=True, null=True) pc_no = models.CharField(max_length=50, blank=True, null=True) class Insight(models.Model): login_id = models.CharField(primary_key=True,max_length=20) place_id = models.CharField(max_length=50, blank=True, null=True) agent_name = models.ForeignKey( schedule, on_delete=models.CASCADE,blank=True, null=True ) pc_no = models.ForeignKey( place_no, on_delete=models.CASCADE,blank=True, null=True )
My View:
def listings(request): data = Insight.objects.select_related('agent_name', 'pc_no') return render(request, 'pages/listings.html', {'data':data})
{% for item in data %} <tr> <td class="text-center align-middle">{{ item.login_id }}</td> <td class="text-center align-middle">{{ item.place_id }}</td> <td class="text-center align-middle">{{ item.agent_name.agent_name }}</td> <td class="text-center align-middle">{{ item.pc_no.pc_no }}</td> </tr> {% endfor %}
Advertisement
Answer
I solved my problem by the below, I could update the DB with the result of the below query
cursor = connection.cursor() cursor.execute(''' UPDATE Insight SET agent = ( SELECT agent_name FROM schedule WHERE Insight.login_id = schedule.login_id ) ''')