Python 如何使用用户名而不是用户id从管理页面导出模型?
我在models.py Django中有一个参与者模型,如下所示: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
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方法?我是否应该为参与者添加这一点?