我有这个 Django模型:
class Log(models.Model):
idlog = models.CharField(max_length=16L, db_column='idLog') # Field name made lowercase.
idhandle = models.CharField(max_length=16L, db_column='idHandle') # Field name made lowercase.
idprevious = models.CharField(max_length=16L, db_column='idPrevious', blank=True) # Field name made lowercase.
idseverity = models.IntegerField(db_column='idSeverity') # Field name made lowercase.
iderrorcode = models.IntegerField(null=True, db_column='idErrorCode', blank=True) # Field name made lowercase.
eventdate = models.DateTimeField(db_column='eventDate') # Field name made lowercase.
trace = models.CharField(max_length=1024L, blank=True)
message = models.CharField(max_length=1024L, blank=True)
method = models.CharField(max_length=32L, blank=True)
class_field = models.CharField(max_length=32L, db_column='class', blank=True) # Field renamed because it was a Python reserved word.
backedup = models.IntegerField(null=True, db_column='backedUp', blank=True) # Field name made lowercase.
id = models.IntegerField(primary_key=True)
class Meta:
db_table = 'log'
def __unicode__(self): # Python 3: def __str__(self):
return self.message
idlog 、 idhandle 和 idprevious 是 MySQL DB 表中 Varbinary(16) 的字段。它们中的每一个都拥有全局唯一标识符 (GUID)。
在我看来,有这个简单的方法:
def logger_handle(request):
tableSize = Handle.objects.all().__len__()
handles = Handle.objects.all().order_by('id')[tableSize - 20:tableSize]
context = {'handles': handles}
return render_to_response('ate_logger/logger_handle.html', context, context_instance=RequestContext(request))
在 logger_handle.html模板中,我有这张表:
<table width="100%" class="gridtable">
<tr>
<th style="width: 100px">idlog</th>
<th style="width: 100px">idhandle</th>
<th style="width: 100px">idprevious</th>
<th style="width: 180px">eventdate</th>
<th style="width: 50px">severity</th>
<th style="width: 50px">errorcode</th>
<th style="width: 300px">trace</th>
<th style="width: 300px">message</th>
<th style="width: 110px">method</th>
</tr>
{% for log in logs %}
<tr>
<td>{{ log.idlog }}</td>
<td>{{ log.idhandle }}</td>
<td>{{ log.idprevious }}</td>
<td>{{ log.eventdate }}</td>
<td>{{ log.idseverity }}</td>
<td>{{ log.iderrorcode }}</td>
<td>{{ log.trace }}</td>
<td>{{ log.message }}</td>
<td>{{ log.method }}</td>
</tr>
{% endfor %}
</table>
我的问题(如您在图像中看到的)是在 idlog 、 idhandle 和 idprevious 没有值(除非它是 None 在桌子上)
在使用 binascii的视图binascii.b2a_hex(value['idhandle'])
中,我可以使用命令将其转换为普通字符串,因此我可以看到 guid。
我的问题是如何在模型层设置它,我如何告诉 django 转换它并将其作为字符串传输到视图,以便我可以在模板上轻松地显示它。