Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django admin中foreignkey的对象:_Django_Python 3.x - Fatal编程技术网

django admin中foreignkey的对象:

django admin中foreignkey的对象:,django,python-3.x,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 当我在django管理员中看到它时,它工作得很好 但在管理员中,当我想查看此

我的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
当我在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)
使用此管理员:

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)
但在管理页面中,stock对象表示为:

Stock object (1)
编辑:

那么如何解决这个问题呢

我的django版本:

>>> import django
>>> django.VERSION 
(2, 0, 0, 'final', 0)

感谢和问候

在models.py中尝试类似的功能(未测试)

在admin.py中,试试这个

class StockData_Admin(admin.ModelAdmin):
 list_display = (
    'get_date',
    'get_stock',
    'get_interval'
 )

 def get_date(self, obj):
     return obj.date

 def get_stock(self, obj):
     return obj.stock

 def get_interval(self, obj):
     return obj.interval

 get_date.empty_value_display = 'No available date'
 get_stock.empty_value_display = 'No available stock'
 get_interval.empty_value_display = 'No available interval'

 admin.site.register(StockData,StockData_Admin)

在models.py中,尝试类似的方法(未测试)

在admin.py中尝试

class StockData_Admin(admin.ModelAdmin):
 list_display = (
    'get_date',
    'get_stock',
    'get_interval'
 )

 def get_date(self, obj):
     return obj.date

 def get_stock(self, obj):
     return obj.stock

 def get_interval(self, obj):
     return obj.interval

 get_date.empty_value_display = 'No available date'
 get_stock.empty_value_display = 'No available stock'
 get_interval.empty_value_display = 'No available interval'

 admin.site.register(StockData,StockData_Admin)

你的
Stock
定义中有一个输入错误-Python的神奇方法以双下划线开始和结束,
Stock
str当前以三个下划线开始,而不是两个下划线。打印
Stock
实例时,它会返回到
models.Model
。删除超级下划线后,您将看到
股票
正确显示:


您的
股票定义中有一个输入错误-Python的神奇方法以双下划线开始和结束,
股票的str当前以三个下划线开始,而不是两个下划线。打印
Stock
实例时,它会返回到
models.Model
。删除超级下划线后,您将看到
股票
正确显示:


从StockData\u Admin中的列表显示中删除间隔class@MohammadAli不工作:/in stock表名称可能返回null值(空字符串),而in stock数据模型也可能返回null(空)。那么在这种情况下,你想显示什么呢?。不清楚您要显示什么。请参见模型中编辑的出生日期@DimitrisKougioumtzis的示例(null=True,blank=True)允许空值(空字符串),因此是否希望使用空字符串?。特别是,在StockData\u Admin中的list\u显示中,在外键删除间隔中使用空值不是最佳做法class@MohammadAli不工作:/in stock表名称可能返回null值(空字符串),而in stock数据模型也可能返回null(空)。那么在这种情况下,你想显示什么呢?。不清楚您要显示什么。请参见模型中编辑的出生日期@DimitrisKougioumtzis的示例(null=True,blank=True)允许空值(空字符串),因此是否希望使用空字符串?。特别是在外键中使用空值不是最佳做法