django admin中的对象为foreignkey:

use*_*794 1 django python-3.x

我的django模型中有这个对象:

class Stock(models.Model):
    name =  models.CharField(null=True,blank=True,max_length=20)
    def ___str__(self):
        return self.name
    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

当我在django管理员中看到它时效果很好.

但是在我想要查看此对象的管理员中:

class StockData(models.Model):
    stock = models.ForeignKey(Stock,on_delete=models.PROTECT,null=True,blank=True)
    date = models.DateTimeField(null=True,blank=True)
    interval = models.CharField(null=True, blank=True,max_length=2)

    def ___str__(self):
        return self.stock+ ":" + str(self.date)
    def __unicode__(self):
        return self.stock + ":" + str(self.date)
Run Code Online (Sandbox Code Playgroud)

有这个管理员:

from django.contrib import admin
from .models import StockData

# Register your models here.
class StockData_Admin(admin.ModelAdmin):
    list_display = (
        'date',
        'stock',
        'interval'
    )

admin.site.register(StockData,StockData_Admin)
Run Code Online (Sandbox Code Playgroud)

但在管理页面中,库存对象表示为:

Stock object (1)
Run Code Online (Sandbox Code Playgroud)

编辑:

在此输入图像描述

那么如何解决这个问题?

我的django版本:

>>> import django
>>> django.VERSION 
(2, 0, 0, 'final', 0)
Run Code Online (Sandbox Code Playgroud)

感谢致敬

umg*_*gel 7

有一个在你的一个错字Stock定义- Python的魔术方法启动和双下划线结束,StockSTR目前开始有三个下划线,而不是两个.当Stock打印实例,它回落到models.Model 默认海峡执行.一旦删除了多余的下划线,您将看到Stock正确显示:

修复了管理员仪表板