0
votes

I want to store database users in admin page with admin authentications. For this aim, I need to modify UserAdmin fields for storing more columns. But I am receiving below error:

DatabaseError at /admin/auth/user/1/change/
ORA-00904: "PROFILE"."USER_ID": invalid identifier

app name profiles, class name is profile. here is the code:

models.py

class profile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE,null=True,blank=False)
    id = models.FloatField(primary_key=True)
    ip = models.CharField(max_length=20, blank=True, null=True)
    ad = models.CharField(max_length=20, blank=True, null=True)
    soyad = models.CharField(max_length=20, blank=True, null=True)
    username = models.CharField(max_length=200, blank=True, null=True)
    password = models.CharField(max_length=200, blank=True, null=True)
    role = models.FloatField(blank=True, null=True)
    email = models.CharField(max_length=2000, blank=True, null=True)
    parent_username = models.CharField(max_length=2000, blank=True, null=True)
    notif_ask = models.CharField(max_length=3, blank=True, null=True)
    notif_answer = models.CharField(max_length=3, blank=True, null=True)
    department = models.CharField(max_length=100, blank=True, null=True)
    position = models.CharField(max_length=50, blank=True, null=True)
    internal_tel_num = models.CharField(max_length=30, blank=True, null=True)
    mob_tel_num = models.CharField(max_length=50, blank=True, null=True)
    image = models.CharField(max_length=300, blank=True, null=True)
    ata_adi = models.CharField(max_length=20, blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'profile'

    def __str__(self):
        return self.user.username

    def __unicode__(self):
        return self.user.username

    @receiver(post_save, sender=User)
    def create_or_update_user_profile(sender, instance, created, **kwargs):
        if created:
            profile.objects.create(user=instance)
            instance.profile.save()

admin.py

class ProfileInline(admin.StackedInline):
    model = profile
    can_delete = False
    verbose_name_plural = 'profile'
    fk_name = 'user'

class CustomUserAdmin(UserAdmin):
    inlines = (ProfileInline, )

    def get_inline_instances(self, request, obj=None):
        if not obj:
            return list()
        return super(CustomUserAdmin, self).get_inline_instances(request, obj)

admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
2
full stacktracce please - e4c5
have you done makemigrations and migrate? - e4c5

2 Answers

0
votes

models.py

you should keep the instance.profile.save() in the same line as the if statement

0
votes

ORA-00904: "PROFILE"."USER_ID": invalid identifier

The error is from the database. PROFILE is a reserved word in Oracle. You can't use it as a table name.