django - 如何在管理面板中自定义多线程内联的“描述”
问题描述
我有那些非常简单的模型:
class Activity(BaseModel):
name = models.CharField(max_length=200, blank=True, null=True)
class Person(BaseModel):
activities = models.ManyToManyField('Activity', related_name='persons')
在admin.py
我为此做了一个内联并且它可以工作,如下所示:
class PersonActivitiesInlineAdmin(admin.StackedInline):
model = Profession.persons.through
fk_name = 'person'
class PersonAdmin(admin.ModelAdmin):
inlines = (PersonActivitiesInlineAdmin, )
我的问题是在管理界面中描述内联的字符串就像
Profession: Person_activities object (831)
Profession: Person_activities object (832)
Profession: Person_activities object (835)
Profession: Person_activities object (838)
那么如何在管理面板中自定义manytomany inline的“描述”呢?
解决方案
一个可能的解决方案是显式地为 的多对多关系创建连接模型,Person
并Activity
使用through
并添加描述:
class Activity(BaseModel):
name = models.CharField(max_length=200, blank=True, null=True)
class Person(BaseModel):
activities = models.ManyToManyField(
Activity,
related_name='persons',
through='PersonActivity' # Use PersonActivity for join model
)
class PersonActivity(BaseModel):
description = models.CharField(max_length=255) # Your custom description field
activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
def __str__(self):
# The admin automatically renders the string representation of the model
# e.g. Person_activities object (838)
# Thus you can return your custom description in order to display it
return self.description
推荐阅读
- python - 将 CSV 文件插入 SQL 数据库 PYTHON 时出现“IndexError:字符串索引超出范围”
- java - 将Java方法中的值重新调整为更改的对象
- node.js - 无法让 MongoDB 复合多键索引与 Mongoose 一起使用
- c++ - POSIX 部分写入、线程安全和锁定
- matrix - 在 Clojure 中打印出一个矩阵
- c++ - 在将二进制文件作为 char * 缓冲区读取时,它会继续将其作为二进制而不是字符读取
- python - 为什么 Point() 没有参数显示?
- npm - Gatsby 运行问题 -'gatsby' 不是内部或外部命令、可运行程序或批处理文件
- html - 自动滑动背景图像中的问题 - Html 和 Css
- php - 从 php 获取路径时如何在 html 中显示图像?