我将satchmo应用程序的管理员放在一起。Satchmo使用OneToOne关系来扩展基本Product
模型,我想在一页上进行全部编辑。
可以将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'>
这样做的唯一方法是自定义表单吗?
编辑: 刚刚尝试下面的代码直接添加字段…也不起作用:
class AlbumAdmin(admin.ModelAdmin):
fields = ('product__name',)
将内联用于OneToOne关系是完全可能的。但是,定义关系的实际字段必须位于内联模型上,而不是父模型上-与外键相同。切换它,它将起作用。
注释后编辑 :您说父模型已经在admin中注册:然后注销它并重新注册。
from original.satchmo.admin import ProductAdmin
class MyProductInline(admin.StackedInline):
model = MyProduct
class ExtendedProductAdmin(ProductAdmin):
inlines = ProductAdmin.inlines + (MyProductInline,)
admin.site.unregister(Product)
admin.site.register(Product, ExtendedProductAdmin)
更新2020(Django 3.1.1)
此方法仍然有效,但是新的 Django
版本中的某些类型已更改,因为inlines
inExtendedProductAdmin
现在应该作为列表而不是元组添加,如下所示:
class ExtendedProductAdmin(ProductAdmin):
inlines = ProductAdmin.inlines + [MyProductInline]
否则您将得到此错误:
inlines = ProductAdmin.inlines + (MyProductInline,)
TypeError: can only concatenate list (not "tuple") to list
比如我们有一个用户表,另外有一个个人资料表,他们之间的关联就是一对一的关系。 定义 一对一关联会用到的注解: @OneToOne、@JoinFrom、@JoinTo、@AutoSelect、@AutoInsert、@AutoUpdate、@AutoSave、@AutoDelete 如 imi-demo 中代码所示,定义了一个$ex属性,这个属性关联UserEx模型。 User中id与UserEx中
一对一关联 版本 新增功能 5.1.2 增加selfRelation方法定义当前关联为自关联 关联定义 定义一对一关联,例如,一个用户都有一个个人资料,我们定义User模型如下: <?php namespace app\index\model; use think\Model; class User extends Model { public function profile()
本文向大家介绍一对一、一对多的关联查询 ?相关面试题,主要包含被问及一对一、一对多的关联查询 ?时的应答技巧和注意事项,需要的朋友参考一下
比如我们有一个用户表,每个用户都可以发布文章,用户和文章就是一对多的关系。 当然imi-demo里一对多的例子选的不好,不过不重要,理解意思就行。 定义 一对多关联会用到的注解: @OneToMany、@JoinFrom、@JoinTo、@AutoSelect、@AutoInsert、@AutoUpdate、@AutoSave、@AutoDelete 如 imi-demo 中代码所示,UserWi
一对多关联 关联定义 一对多关联的情况也比较常见,使用hasMany方法定义,参数包括: hasMany('关联模型','外键','主键'); 除了关联模型外,其它参数都是可选。 关联模型(必须):模型名或者模型类名 外键:关联模型外键,默认的外键名规则是当前模型名+_id 主键:当前模型主键,一般会自动获取也可以指定传入 例如一篇文章可以有多个评论 <?php namespace app\ind
比如我们有一个用户表,一个团队表,他们和头像表相关联。 mysql> desc tb_user; +----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------