Django Module和Varbinary()字段

2024-03-29 00:21:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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)。在

在我的视图中,有一个简单的方法:

^{pr2}$

在记录员那里_句柄.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没有值(除非表中没有值)

{1美元^

在使用binascii的视图中,我可以使用命令binascii.b2a_hex(value['idhandle'])将其转换为普通字符串,因此我可以看到guid。在

我的问题是如何在模型层设置它,如何告诉django将其转换并以字符串形式传输到视图中,以便在模板中轻松显示。在


Tags: namelogtruefielddbstylemodelscolumn
1条回答
网友
1楼 · 发布于 2024-03-29 00:21:33

也许您应该创建自定义字段类来表示idlog、idhandle和idprevious,如下面所述:https://docs.djangoproject.com/en/dev/howto/custom-model-fields/#converting-field-data-for-serialization,并将转换代码放在自定义字段类的value-to-string方法体中。在

注意:您应该对querysets调用count(),而不是调用。len(),因为否则您将获取和检查整个数据,只计算长度。在

另外,如果要使用函数len()检查对象长度,它会在引擎盖下为您调用len()。在

相关问题 更多 >