2
我想在Django admin用戶(/auth/user/
)部分添加自定義列。Django用戶配置文件中的自定義列
models.py
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
birthday = models.DateField()
def __str__(self):
return self.user.username
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
而且在admin.py我有這樣的代碼:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class ProfileInline(admin.StackedInline):
model = Profile
can_delete = False
verbose_name_plural = 'Custom fields'
class CustomUser(UserAdmin):
inlines = (ProfileInline,)
list_diplsay = ('birthday')
def get_inline_instances(self, request, obj=None):
if not obj:
return list()
return super(CustomUser, self).get_inline_instances(request, obj)
admin.site.unregister(User)
admin.site.register(User, CustomUser)
我在這裏讀了list_display
應該做的所有的工作,但在我的情況不起作用。自從我添加該行後,我在管理面板中看不到任何更改。
問題在哪裏?謝謝!
編輯:通過更改list_diplsay
與list_display
修復。現在我得到這個:type object 'User' has no attribute 'birthday'
。有任何想法嗎?
您應該爲此目的使用列表。它最初是爲了節省內存而設計的,但現在它是無關緊要的。 '= ['生日']' –
是的,這可能也會起作用。我們實際上並不知道OP使用的是什麼版本的Django。 – Chris
現在我得到這個:'type object'User'沒有'birthday'屬性。任何想法?謝謝! – Cosocit