管理部分的问题

时间:2012-09-12 09:51:21

标签: django django-admin

我正在开发一个扩展 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。它没有名字和生日

1 个答案:

答案 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()