从Django管理中的另一个模型显示字段
假设我有两个模型。
我想让程序模型中的主题字段出现在 UserProgramAdmin 中。
最好的方法是什么?
class Program(models.Model):
name = models.CharField(max_length=15, blank=False)
summary = models.CharField(max_length=200, blank=True)
subject = models.ManyToManyField(Subject, related_name='all_subjects')
is_active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True, editable=False)
updated_at = models.DateTimeField(auto_now=True, editable=False)
def __str__(self) -> str:
return self.name
class UserProgram(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
)
program = models.ForeignKey(
Program,
on_delete=models.CASCADE,
)
is_active = models.BooleanField(default=True)
is_finish = models.BooleanField(default=False, editable=False)
/admin.py
class UserProgramAdmin(admin.ModelAdmin):
list_display = ('user', 'program' , 'is_active', 'is_finish')
Let say I have two model.
I want to make subject field in Program model appear in UserProgramAdmin.
What is the best way to do that?
class Program(models.Model):
name = models.CharField(max_length=15, blank=False)
summary = models.CharField(max_length=200, blank=True)
subject = models.ManyToManyField(Subject, related_name='all_subjects')
is_active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True, editable=False)
updated_at = models.DateTimeField(auto_now=True, editable=False)
def __str__(self) -> str:
return self.name
class UserProgram(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
)
program = models.ForeignKey(
Program,
on_delete=models.CASCADE,
)
is_active = models.BooleanField(default=True)
is_finish = models.BooleanField(default=False, editable=False)
/admin.py
class UserProgramAdmin(admin.ModelAdmin):
list_display = ('user', 'program' , 'is_active', 'is_finish')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最好的方法是在
Program
字段的__str__
中显示subject
,如下所示:然后是
Program 的主题
显示在UserProgram
的管理中。The best way to do this would be to also show
subject
in the__str__
inProgram
field like this:Then the subject of
Program
shows up in the admin ofUserProgram
.您应该在
userProgram
上定义一种方法,然后在userProgramadmin
list_display属性型py
Admin.py.py中调用它。
You should define a method on
UserProgram
and then call it in yourUserProgramAdmin
list_display attributemodels.py
admin.py