So deleted all the work I had done with this and moved on with the standard user so that I could make progress. Then one day I went back to it and managed to get it working in an hour. I'll post the code for reference but I can't really pin point what made the difference. I do know that the creation forms and stuff were not necessary.
models.py
class PropaUser(AbstractUser):
uuid = UUIDField(auto=True)
admin.py
from django.contrib import admin
from login.models import PropaUser
admin.site.register(PropaUser)
settings.py
AUTH_USER_MODEL = "login.PropaUser"
other models.py
class Word(models.Model):
user = models.ManyToManyField(settings.AUTH_USER_MODEL)
deck = models.ManyToManyField(Deck)
word = models.CharField(max_length=100)
def __unicode__(self): # Python 3: def __str__(self):
return self.word
This is what is working. I do not know what was causing all the issues before because I think I tried this method before posting this question. This may not be a satisfactory answer but this is what is working. Earlier I was also confused about what it takes simply to add a field to the existing User. This is it.