0

我想使用以下内容扩展 User 模型:

class Client(models.Model):
    business_name = models.CharField(max_length=128)
    category = models.ForeignKey(Category) # the beginning of the problem
    user = models.ForeignKey(User, unique=True)

class Category(models.Model):
    category = models.CharField(max_length=75)

#the problem is here
def create_client_profile(sender, instance, created, **kwargs):
    if created:
        Client.objects.create(user=instance)

post_save.connect(create_client_profile, sender=User)

所以当我尝试同步数据库时,它抱怨 category_id 不能为空,问题的根源是“create_client_profile”。我该如何解决这个问题?如果我删除“create_client_profile”,它会起作用,但是是的,我会丢失 get_profile()。

您如何看待这个解决方案?我不确定它是否足够 Djangoish :)

4

2 回答 2

0

数据库是否已经包含 的数据Client?可能有带有null类别的条目。

如果将category行更改Client为:

category = models.ForeignKey(Category, null=True)

有帮助吗?

于 2011-10-31T14:46:49.570 回答
0

因此,您有一个信号,该信号会在创建用户时自动创建客户端。您的 Client 模型对 Category 具有强制性 ForeignKey,但您的信号未设置类别。

解决方案应该很明显:要么让你的类别 FK null=True,要么让你的信号来获取/创建相关类别。

于 2011-10-31T14:51:19.047 回答