Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 模板正在显示对象名称而不是值_Django - Fatal编程技术网

Django 模板正在显示对象名称而不是值

Django 模板正在显示对象名称而不是值,django,Django,在更改模型以在自定义用户表之前添加以下OrgLevel之前,我的模板用于正确显示数据 class OrgLevel(models.Model): coid = models.CharField(db_column='Coid', max_length=5, primary_key = True, unique = True) # Field name made lowercase. slevel = models.CharField(db_column='SLevel',

在更改模型以在自定义用户表之前添加以下OrgLevel之前,我的模板用于正确显示数据

class OrgLevel(models.Model):

    coid = models.CharField(db_column='Coid',  max_length=5, primary_key = True, unique = True)  # Field name made lowercase.
    slevel = models.CharField(db_column='SLevel', max_length=6)  # Field name made lowercase.
    blevel = models.CharField(db_column='BLevel', max_length=6)  # Field name made lowercase.
    rlevel = models.CharField(db_column='RLevel', max_length=6)  # Field name made lowercase.
    dlevel = models.CharField(db_column='DLevel', max_length=6)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'OrgLevel'
我的自定义用户模型定义如下:

class User(AbstractBaseUser, PermissionsMixin):

    email = models.EmailField(unique=True)
    username = models.CharField(max_length=7, unique=True)
    formattedusername = models.CharField(max_length=11, unique=True, primary_key = True)
    first_name = models.CharField(max_length=40)
    last_name = models.CharField(max_length=140)
    date_joined = models.DateTimeField(default=timezone.now)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_cfo = models.BooleanField(default=False)
    facility = models.CharField(max_length=140)
    officename = models.CharField(max_length=100)
    jobdescription = models.CharField(max_length=140)
    positioncode = models.CharField(max_length = 100)
    positiondescription = models.CharField(max_length=140)
    coid = models.OneToOneField(OrgLevel, null=True, blank = True)
    streetaddress = models.CharField(max_length=140)
    title = models.CharField(max_length=100)

    USERNAME_FIELD = 'username'

    class Meta:
        app_label = 'accounts'
        db_table = "user"

    def save(self, *args, **kwargs):
        self.formattedusername = '{domain}\{username}'.format(
            domain='HCA', username=self.username)
        super(User, self).save(*args, **kwargs);

    def get_short_name(self):
        return self.username
在我看来,我将所有者定义为:

def profile(request):
    owner = User.objects.get (formattedusername=request.user.formattedusername)
    reportdetail = QVReportAccess.objects.filter(ntname = owner.formattedusername, active = 1).values('report_name_sc')

    reportIds = QVReportAccess.objects.filter(ntname = owner.formattedusername).values_list('report_id', flat=True)
    reportaccess = QvReportList.objects.filter(report_id__in= reportIds).values_list('report_name_sc', flat = True).distinct()
    reportGroups = QVReportAccess.objects.filter(ntname = owner.formattedusername).values_list('report_group_id', flat=True)
    reportlist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).exclude(active=0)

    allreports = 'placeholder'

    if allreports in reportaccess:
        bhreportgrouplist = None
        cereportgrouplist = None
        finreportgrouplist = None
        careportgrouplist = None
        pireportgrouplist = None
        screportgrouplist = None
        dssreportgrouplist = None
        psgreportgrouplist = None
        othreportgrouplist = None
        showbutton = None
    else:
        bhreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 200)
        cereportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 500)
        finreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 600)
        careportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 800)
        pireportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 1100)
        screportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 1200)
        dssreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 1300)
        psgreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 1400)
        othreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 99999)
        showbutton = ""

        print (f"owner:{owner.coid}")
        print (f"reportdetail:{reportdetail}")
        print (f"reportids:{reportIds}")
        print (f"reportaccess:{reportaccess}")
        print (f"reportgroups:{reportGroups}")
        print (f"reportlist:{reportlist}")



    args = {'user':owner, 'applicationaccess':reportaccess, 'applicationlist':reportlist, 'bhgrouplist':bhreportgrouplist, 'cegrouplist':cereportgrouplist, 'fingrouplist':finreportgrouplist
          , 'cagrouplist':careportgrouplist, 'pigrouplist':pireportgrouplist, 'scgrouplist':screportgrouplist, 'dssgrouplist':dssreportgrouplist, 'psggrouplist':psgreportgrouplist
          , 'othgrouplist':othreportgrouplist, 'showbutton':showbutton}

    return render(request, 'accounts/profile.html', args)
如果我使用以下内容打印所有者:

print (f"owner:{owner.formattedusername}")
它将正确打印所有者。但是,如果我打印owner.coid,它会将输出打印为:

owner:OrgLevel object

如何让owner.coid作为值而不是对象打印?

owner.coid.coid

第一个
coid
指的是OrgLevel对象。第二个
coid
是指该对象中的
coid
字段


我强烈建议对字段使用不同的名称。我建议使用
org
orglevel
而不是
coid
作为用户中的字段。至于第二个
coid
,我建议使用Django提供的默认自动
id
主键,除非您需要保持与pre-Django数据库的兼容性。

感谢您的快速响应,我认为这很简单。通过添加外键,我基本上在用户表上创建了一个附加级别。不幸的是,我将无法重命名这些表,因为它们是预先存在的生产数据库表。