我正在开发一个扩展 auth_user 表的应用,无论何时任何用户注册到应用,其一个实例都在扩展表中创建,它运行良好从简单的URL(手动),但当我从管理员端登录并添加用户时,它也将在扩展表中创建实例,但不显示或取用户名,它只显示空白行。
model.py代码如下:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class Drinker(models.Model):
user =models.OneToOneField(User)
birthday =models.DateField()
name =models.CharField(max_length=100)
def __unicode__(self):
return self.name
#create our user object to attach to our drinker object
def create_drinker_user_callback(sender, instance, **kwargs):
drinker, new=Drinker.objects.get_or_create(user=instance)
post_save.connect(create_drinker_user_callback, User)
最后3行三个在扩展表饮者中创建实例但是没有显示任何值只是从auth_user表中获取user_id。它没有名字和生日
答案 0 :(得分:1)
您没有填充Drinker.name字段。 该行为空白,因为 unicode ()方法没有返回任何内容。
解决此问题的一种方法是在信号处理程序中明确设置它:
def create_drinker_user_callback(sender, instance, **kwargs):
drinker, new=Drinker.objects.get_or_create(user=instance, name=instance.get_full_name())
post_save.connect(create_drinker_user_callback, User)
或完全抛弃(可能是冗余的)名称字段并将其标准化一点:
class Drinker(models.Model):
user = models.OneToOneField(User)
birthday = models.DateField()
def __unicode__(self):
return self.user.get_full_name()