0

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

4

1 回答 1

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()
于 2012-09-12T10:16:19.000 回答