【问题标题】:Django model field is showing in django adminDjango 模型字段显示在 django admin 中
【发布时间】:2020-03-26 03:09:52
【问题描述】:

在我的 django 管理模型(配置文件)中,我看不到在 django 模型中声明的 StudentID 字段。 模型.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    StudentID = models.AutoField(primary_key=True, verbose_name='SID')
    Branch = models.CharField(max_length=255, choices=Departments, default="CSE")
    YearOfStudy = models.IntegerField(default=1)
    ContactNumber = PhoneField(help_text='Contact phone number')
    image = models.ImageField(default='default.jpeg', upload_to='profile_pics', blank=True)
    parentsContactNumber = PhoneField(help_text="Parent's phone number", blank=True)

    def __str__(self):
        return f'{self.user.username} Profile'

【问题讨论】:

  • 你的 ModelAdmin 在哪里?
  • 注意:Django 管理员从管理员更改表单中排除自动 PK 字段(因为它们不可编辑)。如果要显示该值,则必须覆盖您的管理员 change_form 模板。
  • 您可以使用模型管理员在列表中显示该 StudentId,但是 StudentId 字段在表单上将不可用,因为它是 AutoField,因为 @brunodesthuilliers 说您需要覆盖管理员表单模板才能获取 id表单上的字段。

标签: python django django-admin


【解决方案1】:

要在管理页面中反映您的 StudentID,您必须在 str 函数中返回它

    def __str__(self): 
    return self.StudentID

【讨论】:

  • 1/ __str__() 魔术方法必须返回一个字符串(您的代码最终会引发 TypeError),2/ 这不会使该字段出现在更改表单中。
猜你喜欢
  • 2013-08-28
  • 2011-03-07
  • 2018-06-17
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 2018-10-28
  • 2017-09-14
相关资源
最近更新 更多