如何通过数据库字段的数据更改Django模型的对象名称?

时间:2016-11-24 18:21:09

标签: python django django-models

我想知道如何通过与我的数据库对应的数据更改Campaign对象和Destino对象。我使用的代码将数据返回到我的数据库,但是在显示操作的部分中,它没有这样做。还有其他办法吗?感谢您阅读我的问题并留下您的答案。

这是我的admin.py文件:

from django.contrib import admin
from .models import Campania, Destino

class CampaniaAdmin(admin.ModelAdmin):
   list_display = ('id_campania','nombre_campania','fecha_creacion','fecha_inicio','usuario','correos_diarios','email','sms', 'completado')
   search_fields = ['nombre_campania']

class DestinoAdmin(admin.ModelAdmin):
   list_display = ('id_destino','unidad_id_unidad','campania_id_campania','enviado','fecha_hora')
   search_fields = ['id_destino']

这是我的models.py文件:

from __future__ import unicode_literals
from django.db import models

class Campania(models.Model):
   id_campania = models.AutoField(primary_key=True, verbose_name='ID')
   template = models.ForeignKey('Template', db_column='template', blank=True, null=True, verbose_name='Template')
   nombre_campania = models.CharField(max_length=500, blank=True, null=True, verbose_name='Nombre de la campaña')
   fecha_creacion = models.DateField(blank=True, null=True, verbose_name='Fecha de creación')
   fecha_inicio = models.DateField(blank=True, null=True, verbose_name='Fecha de inicio')
   usuario = models.CharField(max_length=250, blank=True, null=True, verbose_name='Creador de la campaña')
   correos_diarios = models.IntegerField(blank=True, null=True, verbose_name='Correos por día')
   email = models.BooleanField(default=True, verbose_name='Enviar correo')
   sms = models.BooleanField(default=True, verbose_name='Enviar mensaje (sms)')
   completado = models.NullBooleanField(default=False, blank=True, null=True, verbose_name='Completado')

   class Meta:
      managed = False
      db_table = 'campania'
      verbose_name_plural = "Campañas"

   def __str__(self):
       return '{}'.format(self.nombre_campania)


class Destino(models.Model):
   id_destino = models.AutoField(primary_key=True, verbose_name='ID')
   unidad_id_unidad = models.ForeignKey('Unidad', db_column='unidad_id_unidad', blank=True, null=True, verbose_name='Unidad destino')
   campania_id_campania = models.ForeignKey('Campania', db_column='campania_id_campania', blank=True, null=True, verbose_name='Campaña dirigida')
   enviado = models.NullBooleanField(blank=True, null=True, verbose_name='Confirmación de envío de campaña')
   fecha_hora = models.DateTimeField(blank=True, null=True, verbose_name='Fecha de envío')

   class Meta:
      managed = False
      db_table = 'destino'
      verbose_name_plural = "Destinos"


   def __str__(self):
       return '{}'.format(self.unidad_id_unidad)

以下是我的管理网站的图片: admin site

检查行动(Acciones)部分

我使用的是Django的1.8版和Python的3.4.4版

1 个答案:

答案 0 :(得分:3)

Django Admin正在使用LogEntry来显示您最近的操作。此模型基于内容类型 - 尝试在更改模型后运行manage.py migrate(更改内容类型中的模型名称)。

另一件事是对象名称 - 它存储在LogEntry object_repr字段中,并且在操作后立即转储,因此在执行操作后更改模型repr的计算方式不会反映在这里(看起来当执行动作时,你没有为你的模型定义__str__,它使用的是Django的默认__str__,即<Model name> object)。如果您现在对特定对象执行某些操作(创建,更新,删除),您应该在此处看到对象的值__str__