我正在把一个satchmo应用程序的管理。Product
使用OneToOne关系来扩展基本的Satchmo模型,我想在一个页面上对其进行编辑。
可以将OneToOne关系作为内联?如果不是,那么添加几个字段到我的管理页面的最佳方式是什么,这些字段最终将保存到OneToOne关系中?
例如:
class Product(models.Model):
name = models.CharField(max_length=100)
...
class MyProduct(models.Model):
product = models.OneToOne(Product)
...
我尝试了我的管理员,但它不工作,似乎需要一个外键:
class ProductInline(admin.StackedInline):
model = Product
fields = ('name',)
class MyProductAdmin(admin.ModelAdmin):
inlines = (AlbumProductInline,)
admin.site.register(MyProduct, MyProductAdmin)
这会抛出这个错误:<class 'satchmo.product.models.Product'> has no ForeignKey to <class 'my_app.models.MyProduct'>
是完成此任务的唯一方法,它是一个Custom Form
编辑:刚刚尝试了以下代码来直接添加字段...也不起作用:
class AlbumAdmin(admin.ModelAdmin):
fields = ('product__name',)
发布于 2012-09-28 20:42:57
可以使用继承而不是OneToOne关系
class Product(models.Model):
name = models.CharField(max_length=100)
...
class MyProduct(Product):
.....
或使用代理类
class ProductProxy(Product)
class Meta:
proxy = True
在admin.py中
class MyProductInlines(admin.StackedInline):
model = MyProduct
class MyProductAdmin(admin.ModelAdmin):
inlines = [MyProductInlines]
def queryset(self, request):
qs = super(MyProductAdmin, self).queryset(request)
qs = qs.exclude(relatedNameForYourProduct__isnone=True)
return qs
admin.site.register(ProductProxy, MyProductAdmin)
在这个变种中,你的产品将是内联的。
https://stackoverflow.com/questions/1744203
复制相似问题