gpt4 book ai didi

Django InlineModelAdmin 给出错误 'MediaDefiningClass' 对象不可迭代

转载 作者:行者123 更新时间:2023-12-04 22:42:31 32 4
gpt4 key购买 nike

来自模型.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)

来自 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 )

错误 类型错误:“MediaDefiningClass”对象不可迭代 出现在 admin 的最后一行:admin.site.register( IndicatorInline )。如果我尝试先注册 IndicatorInline 或任何外键类都没有关系。

我引用了 this post ,这鼓励使用 fk_name 属性。无论我是否使用 fk_name,都会发生错误。

最佳答案

注册模型管理类时需要指定模型。

admin.site.register(Indicator, IndicatorInline)

请注意,如果您删除 admin.site.register( Indicator )从模块顶部开始,您就不必调用 admin.site.unregister(Indicator)之后。

我建议重命名 IndicatorInline - 它是具有内联的模型管理员,因此最好将其命名为 IndicatorAdmin .在这种情况下,您可以通过以下方式注册它:
admin.site.register(Indicator, IndicatorAdmin)

关于Django InlineModelAdmin 给出错误 'MediaDefiningClass' 对象不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41878496/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com