【发布时间】:2012-11-12 21:57:59
【问题描述】:
我在 Django models.py 中有以下内容(模型被精简到只有必要的字段)
class Product(BaseProduct):
price = models.IntegerField()
productfoto = models.ManyToManyField("ProductFoto", related_name="%(app_label)s_%(class)s_related")
class Meta:
abstract = True
ordering = ['name']
# Inherits Product class
class ConsumerProduct(Product):
categorie= models.ForeignKey(Categorie)
class Meta:
verbose_name_plural = "ConsumerProducten"
class ProductFoto(models.Model):
myimage= FileBrowseField("Image", max_length=200, directory='producten')
这在 admins.py 中:
class ProductFotoInline(admin.TabularInline):
extra = 1
model = Product.productfoto.through
class ConsumerProductAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("name",)}
inlines= [ProductFotoInline]
admin.site.register(ConsumerProduct, ConsumerProductAdmin)
请注意以下几点:
- 产品类是抽象的
- ConsumerProduct 继承 Product
我会说这应该可以,但是在尝试添加新的 ConsumerProduct 时出现以下 ImproperlyConfigured 错误:
'model' is a required attribute of 'ConsumerProductAdmin.inlines[0]'.
感谢任何帮助
【问题讨论】:
-
model = Product.productfoto.through。这不应该是model = ProductFoto吗? -
不幸的是,您的方法提供了
<class 'product.models.ProductFoto'> has no ForeignKey to <class 'product.models.ConsumerProduct'>,我认为这不是理想的解决方案,因为 Product 是一个抽象类,而 ProductFoto 应该“知道”这一点,并且只能以某种方式将引用添加到 ConsumerProduct 类
标签: django django-models django-admin