Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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
Python 如何使用用户名而不是用户id从管理页面导出模型?_Python_Django - Fatal编程技术网

Python 如何使用用户名而不是用户id从管理页面导出模型?

Python 如何使用用户名而不是用户id从管理页面导出模型?,python,django,Python,Django,我在models.py Django中有一个参与者模型,如下所示: from django.db import models from django.contrib.auth.models import User class Participant(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, null=True) created_at = models.DateTimeF

我在models.py Django中有一个参与者模型,如下所示:

from django.db import models
from django.contrib.auth.models import User

class Participant(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    score = models.FloatField(default=0)
    completed_study = models.BooleanField(default=False)


    def __str__(self):
        return self.user.username
我希望能够从admin页面导出所有数据,因此在admin.py下我添加了以下内容

from django.contrib import admin
from .models import Participant
from django.contrib.auth.admin import UserAdmin as BaseAdmin
from import_export.admin import ImportExportModelAdmin
from import_export import resources
from django.contrib.auth.models import User

class UserResource(resources.ModelResource):
    class Meta:
        model = User
        fields = ('id', 'username')

class UserAdmin(BaseAdmin, ImportExportModelAdmin):
    resource_class = UserResource


class ParticipantAdmin(admin.ModelAdmin):

    list_display = ['user', ]
    readonly_fields = ('created_at', 'updated_at',)

class ParticipantAdmin(ImportExportModelAdmin):
    pass 
admin.site.register(Participant, ParticipantAdmin)
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

我可以从参与者模型导出数据,但我希望在用户字段下显示实际用户名,而不是id。我如何才能做到这一点?这是否可行

class UserResource(resources.ModelResource):
    class Meta:
        model = User
        fields = ('id', 'username')

    def dehydrate_username(self, user):
        return user.username
导入导出库提供了一种基于关系字段的动态方法,因此您可以使用
decreatee\ucode>

返回特定字段的任何数据,我刚刚添加了:

fields = ('user__username') 

为了表示关系字段

我已经能够使用用户名从用户模型导出数据,为什么我要为用户类添加dehydrate方法?我是否应该为参与者添加这一点?