Python 我的数据填充在使用Django';用户模型。为什么?
这段代码工作得很好,它是一个与UserRating模型具有一对多关系的用户模型 视图: 型号:Python 我的数据填充在使用Django';用户模型。为什么?,python,django,django-models,Python,Django,Django Models,这段代码工作得很好,它是一个与UserRating模型具有一对多关系的用户模型 视图: 型号: # this is model for user class User(models.Model): username = models.CharField(max_length=128, unique=True) email = models.EmailField(max_length=128, unique=True) profilepic = models.ImageFi
# this is model for user
class User(models.Model):
username = models.CharField(max_length=128, unique=True)
email = models.EmailField(max_length=128, unique=True)
profilepic = models.ImageField(null=True)
firstname = models.CharField(max_length=128, null=True)
secondname = models.CharField(max_length=128, null=True)
city = models.ForeignKey(City)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
# Uncomment if you don't want the slug to change every time the name changes
# if self.id is None:
# self.slug = slugify(self.name)
self.slug = slugify(self.username)
super(User, self).save(*args, **kwargs)
def __unicode__(self):
return self.username
@property
def avg_rating(self):
return self.userrating_set.all().aggregate(Avg('rating'))['rating__avg']
# this is the model for user ratings - one to many relationship with User
class UserRating(models.Model):
user = models.ForeignKey(User)
comment = models.CharField(max_length=500)
for_username = models.CharField(max_length=128)
rating = models.IntegerField(default=5)
def __unicode__(self):
return unicode(self.rating)
然而,一旦我使用Django的内置用户模型,它就会崩溃,如下所示(用户模型与UserProfile模型具有一对一关系,与UserRating具有一对多关系)
通过管理员页面添加用户配置文件时,会生成此错误:
super(type, obj): obj must be an instance or subtype of type
您必须在
super
调用中调用实际的超类;它是UserProfile,而不是User
def save(self, *args, **kwargs):
self.slug = slugify(self.user.username)
super(UserProfile, self).save(*args, **kwargs)
super(type, obj): obj must be an instance or subtype of type
def save(self, *args, **kwargs):
self.slug = slugify(self.user.username)
super(UserProfile, self).save(*args, **kwargs)