0

我的用户模型如下。

**model.py**
class User(models.Model):
    #user_idx = models.AutoField('user-num', primary_key=True)
    user_idx = models.OneToOneField(Counsel, primary_key=True, db_column="user_idx", related_name="useridx" , on_delete="models.DO_NOTHING")
    district_id = models.IntegerField(blank=True, null=True)
    user_email = models.CharField(unique=True, max_length=200)
    user_password = models.CharField(max_length=200)
    user_name = models.CharField(max_length=100)

    class Meta:
        managed = False
        db_table = 'user'


           verbose_name_plural = "USER"

class Counsel(models.Model):
    counsel_idx = models.AutoField(primary_key=True)
    category_sub_idx = models.IntegerField(blank=True, null=True)
    user_idx = models.IntegerField()
    counsel_title = models.CharField(max_length=255)
    counsel_contents = models.TextField()
    counsel_status = models.CharField(max_length=1, choices=COUNSEL_STATUS)
    answer_count = models.IntegerField()
    hit = models.IntegerField()
    user_ip = models.CharField(max_length=20, blank=True, null=True)
    register_date = models.DateTimeField()
    update_date = models.DateTimeField()
    deleted = models.CharField(max_length=1, choices=DELETE_STATUS)

django 管理员然后创建源如下:

class UserAdmin(admin.ModelAdmin):
    list_display = ('user_idx', 'show_firm_url', 'user_name',)

    def show_firm_url(self, obj):
        return format_html("<a href='/admin/user/view/{0}'>{1}</a>", obj.user_idx, obj.user_email)

    show_firm_url.short_description = 'E-mail'

结果就像图像。 在此处输入图像描述

咨询对象 (1494) 请告诉我如何获取此号码。劝告对象 (1494) -----> 1494

4

2 回答 2

0

__str__()每当需要将模型实例表示为字符串时,Django 都会使用在模型实例上定义的方法:

class User(models.Model):
    # ... your fields

    def __str__(self):
        return "%d" % self.user_idx.pk

__unicode__()仅当您没有在 Python3 上运行 Django 时才有效。

于 2019-03-18T10:34:49.663 回答
-1

覆盖__unicode__以更改 django 为您的模型对象呈现的内容=> 此方法适用于 python2 而不是 python3

覆盖__str__以更改 django 为您的模型对象呈现的内容

class User(models.Model):

    user_idx = models.OneToOneField(Counsel, primary_key=True, 
    db_column="user_idx", related_name="useridx" , on_delete="models.DO_NOTHING")
    district_id = models.IntegerField(blank=True, null=True)
    user_email = models.CharField(unique=True, max_length=200)
    user_password = models.CharField(max_length=200)
    user_name = models.CharField(max_length=100)

    def __str__(self):
        return "%d" % self.user_idx.id  # id is field of Counsel object you want to show

在您的情况下,如果您想更改Counsel对象代表的内容,则必须将该模型更改为该模型:

class Counsel(models.Model):
    counsel_idx = models.AutoField(primary_key=True)
    category_sub_idx = models.IntegerField(blank=True, null=True)
    user_idx = models.IntegerField()
    counsel_title = models.CharField(max_length=255)
    counsel_contents = models.TextField()
    counsel_status = models.CharField(max_length=1, choices=COUNSEL_STATUS)
    answer_count = models.IntegerField()
    hit = models.IntegerField()
    user_ip = models.CharField(max_length=20, blank=True, null=True)
    register_date = models.DateTimeField()
    update_date = models.DateTimeField()
    deleted = models.CharField(max_length=1, choices=DELETE_STATUS)

    def __str__(self):
        return "%d" % self.user_idx
于 2019-03-18T10:30:05.183 回答