Sha*_*ton 2 django django-models django-admin
来自models.py
class Indicator(models.Model):
name = models.CharField(max_length=50)
youtube = models.CharField(max_length=LONG_BLOG_POST_CHAR_LEN)
description = models.CharField(max_length=LONG_BLOG_POST_CHAR_LEN)
recommendation = models.CharField(max_length=LONG_BLOG_POST_CHAR_LEN)
isPublic = models.BooleanField(default=False)
methods_path = models.CharField(max_length=100,default=None)
meta_description = models.CharField(max_length=150,default='')
image_path = models.CharField(max_length=100,blank=True)
def __str__(self):
return self.name
class IndicatorParameterInt(models.Model):
name = models.CharField(max_length=50)
value = models.IntegerField(default=1)
indicator_int_parameter = models.ForeignKey(Indicator, on_delete=models.CASCADE)
hidden = models.BooleanField(default=False)
class IndicatorParameterFloat(models.Model):
name = models.CharField(max_length=50)
setting = models.FloatField(default=1)
indicator_float_parameter = models.ForeignKey(Indicator, on_delete=models.CASCADE)
hidden = models.BooleanField(default=False)
class Comparison(models.Model):
name = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
来自admin.py
from django.contrib import admin
from .models import *
# Register your models here.
admin.site.register( MarketData )
admin.site.register( Indicator )
admin.site.register( UserProfile )
class IndicatorParameterIntInline(admin.TabularInline):
model = IndicatorParameterInt
fk_name = "indicator_int_parameter"
class IndicatorParameterFloatInline(admin.TabularInline):
model = IndicatorParameterFloat
fk_name = "indicator_float_parameter"
class ComparisonInline(admin.TabularInline):
model = Comparison
fk_name = "Comparison"
class IndicatorInline(admin.ModelAdmin):
inlines = [
IndicatorParameterIntInline,
IndicatorParameterFloatInline,
ComparisonInline,
]
admin.site.unregister( Indicator )
admin.site.register( IndicatorInline )
Run Code Online (Sandbox Code Playgroud)
错误TypeError:'MediaDefiningClass'对象不可迭代出现在admin的最后一行:admin.site.register(IndicatorInline)。我尝试先注册IndicatorInline还是任何外键类都没有关系。
我引用了这篇文章,鼓励使用fk_name属性。无论是否使用fk_name,都会发生错误。
注册模型管理类时,需要指定模型。
admin.site.register(Indicator, IndicatorInline)
Run Code Online (Sandbox Code Playgroud)
请注意,如果您admin.site.register( Indicator )从模块顶部删除,则admin.site.unregister(Indicator)以后无需调用。
我建议重命名IndicatorInline-这是具有内联的模型管理员,因此最好命名为IndicatorAdmin。在这种情况下,您可以将其注册到:
admin.site.register(Indicator, IndicatorAdmin)
Run Code Online (Sandbox Code Playgroud)
首先,尽量不要使用import *- 始终导入您正在使用的模型。
接下来,我认为改变这个应该足够了
from django.contrib import admin
from .models import *
class IndicatorParameterIntInline(admin.TabularInline):
model = IndicatorParameterInt
fk_name = "indicator_int_parameter"
class IndicatorParameterFloatInline(admin.TabularInline):
model = IndicatorParameterFloat
fk_name = "indicator_float_parameter"
class ComparisonInline(admin.TabularInline):
model = Comparison
fk_name = "Comparison"
class IndicatorInline(admin.ModelAdmin):
inlines = [
IndicatorParameterIntInline,
IndicatorParameterFloatInline,
ComparisonInline,
]
admin.site.register(Indicator, IndicatorInline)
admin.site.register(MarketData, )
admin.site.register(UserProfile, )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8630 次 |
| 最近记录: |