Szybkie (prawdopodobnie głupie) pytanie. To jest przepływ mojej witryny: użytkownik loguje się i jest przekierowywany do niestandardowej strony administratora. Na tej stronie administratora mają możliwość utworzenia "Profilu". Chcę powiązać utworzony profil z danymi użytkownika w taki sposób, aby 1 użytkownik kojarzył się z 1 profilem.Połączyć się z modelem użytkownika w Django
Z jakiegoś powodu nie działa następnym (po prostu stara się skojarzyć
UserAdmin.Models
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
username = models.ForeignKey(User)
firstname = models.CharField(max_length=200)
lastname = models.CharField(max_length=200)
email = models.EmailField(max_length=200)
def __unicode__(self):
return self.username
UserAdmin.Views
def createprofile(request):
user = User.objects.get(id=1)
profile = Profile(username=user, firstname='Joe', lastname='Soe', email='[email protected]')
profile.save()
wciąż otrzymuję: tabela useradmin_profile nie ma kolumny o nazwie usern ame_id
Jakieś pomysły? Doceniony.
EDIT:
Usunięto moim DB i pobiegł świeżego syncdb, zmieniono nazwę użytkownika (user = models.OneToOneField). Teraz mogę uzyskać Nie można przypisać "u'superuser" ":" Profile.username "musi być instancją" użytkownika ".
Hmm, dzięki. Teraz otrzymuję: Nie można przypisać "u'John" ":" Profile.username "musi być instancją" użytkownika ". (John to User.username) – user1059105
Edytował kod ... Spróbuj. Będziesz musiał jednak zrobić świeżą syncdb. – Scalamoosh
Hmm. W porządku spróbował tego ze świeżą syncdb. Powłoka drukuje puste miejsce, gdy próbuję uzyskać dostęp do a.pierwsza nazwa, gdzie a = Użytkownik. Kiedy próbuję uzyskać dostęp do obiektu Profile i zrobić Profile.objects.all(), otrzymam wydrukowaną zamiast full_name(). Jakieś pomysły? – user1059105