AttributeError: 'Manager' object has no attribute 'get_by_natural_key' error in Django?
You have created a new user model but you have not yet specified a manager for that model. If you're not yet familiar with managers in Django I suggest reading the documentation on that first. As the Django 1.5 say (source):
You should also define a custom manager for your User model. If your User model defines username and email fields the same as Django's default User, you can just install Django's UserManager; however, if your User model defines different fields, you will need to define a custom manager that extends BaseUserManager providing two additional methods:
create_user()
andcreate_superuser()
.
In short, if your model uses the same username and email fields as Django's User
model then you can write:
from django.contrib.auth.models import UserManagerclass GalaxyUser(models.Model): id = models.IntegerField(primary_key=True) create_time = models.DateTimeField(null=True, blank=True) update_time = models.DateTimeField(null=True, blank=True) email = models.CharField(max_length=765) password = models.CharField(max_length=120) external = models.IntegerField(null=True, blank=True) deleted = models.IntegerField(null=True, blank=True) purged = models.IntegerField(null=True, blank=True) username = models.CharField(max_length=765, blank=True) form_values_id = models.IntegerField(null=True, blank=True) disk_usage = models.DecimalField(null=True, max_digits=16, decimal_places=0, blank=True) objects = UserManager() class Meta: db_table = u'galaxy_user'
Alternatively, you'll need to subclass BaseUserManager
(also in django.contrib.auth.models
) and implement the desired methods. Then, you'll need to assign it to the objects
variable for your model.