Here’s my models
JavaScript
x
22
22
1
class Robot(models.Model):
2
robot = models.CharField(max_length=100)
3
short_Description = models.CharField(max_length=200)
4
status = models.CharField(max_length=20)
5
parameter = models.CharField(max_length=200)
6
jenkins_job = models.CharField(max_length=100, default='JenkinsJobName')
7
jenkins_token = models.CharField(max_length=100, default='JenkinsToken')
8
jenkins_build = models.CharField(max_length=10, default=0)
9
jenkins_build_status = models.CharField(max_length=20, default="Never Run")
10
def __str__(self):
11
return self.robot
12
13
14
class jenkinsHistory(models.Model):
15
robotName = models.ForeignKey(Robot, on_delete=models.CASCADE, blank=True, null=True)
16
jenkinsBuildNumber = models.CharField(max_length=100,blank=True)
17
jenkinsBuildStatus = models.CharField(max_length=200,blank=True)
18
errorMsg = models.CharField(max_length=500,blank=True)
19
Param = models.CharField(max_length=500,blank=True, null=True)
20
def __str__(self):
21
return self.robotName
22
I have assign data in jenkinsHistory table from Robot table. here’s the code that how i assign the data
JavaScript
1
6
1
def Run_data(Request,id):
2
if Request.method == 'POST':
3
pi = Robot.objects.get(pk=id)
4
hist = jenkinsHistory(robotName= pi,jenkinsBuildStatus='Jenkins-Running')
5
hist.save()
6
now i want to show that data in a table in my UI. so that i have written this view
JavaScript
1
6
1
def Robot_History(Request,id):
2
fm = list(jenkinsHistory.objects.values('id','robotName','jenkinsBuildNumber','jenkinsBuildStatus','errorMsg','Param').filter(robotName=id))
3
print("hello",fm)
4
rob = Robot.objects.all()
5
return render(Request, 'hello/robotHistory.html',{'jenkinsHistory': fm,'robot': rob})
6
and here’s my html
JavaScript
1
13
13
1
{% for hist in jenkinsHistory %}
2
<tbody>
3
<tr>
4
<td>{{hist.id}}</td>
5
<td>{{hist.robotName}}</td>
6
<td>{{hist.jenkinsBuildNumber}}</td>
7
<td>{{hist.jenkinsBuildStatus}}</td>
8
<td>{{hist.errorMsg}}</td>
9
<td>{{hist.Param}}</td>
10
</tr>
11
</tbody>
12
{% endfor %}
13
But when i got the data the foreign key field coming as a id not string
but in my django admin it is coming as a string only
how to solve that issue?
Advertisement
Answer
You can use robotName__robot
in your values
call:
JavaScript
1
2
1
jenkinsHistory.objects.values( , 'robotName__robot', )
2
and use that same field in your template:
JavaScript
1
2
1
{{ hist.robotName__robot }}
2
While at it, I suggest you change jenkinsHistory
‘s robotName
field to just robot
, as this pertains to the foreign key (or Robot
object) and not just the name. This will help make your code less confusing and more readable.