Ich nehme an, dass dies daran liegt, dass mein Superuser von UserProfile abhängig ist, für das noch keine Daten vorhanden sind. Mein Modell sieht aus wieSuper User kann nicht erstellt werden Django
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class UserProfile(models.Model):
user = models.OneToOneField(User) # required
location = models.CharField(max_length=100)
age = models.PositiveIntegerField(blank=True,null=True)
contribution_points = models.PositiveIntegerField()
#acheivements = models.ManyToMany()
def create_user_profile(sender,instance,created,**kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
Allerdings habe ich mit dem folgenden Fehler am Ende:
django.db.utils.DatabaseError: (1146, "Table 'savory_db.login_userprofile' doesn't exist")
trotz syncdb
gerade lief zu haben
Hat mein Modell irgendwelche widersprüchliche Felder, die diesen Fehler verursachen würde . Sollte UserProfile nicht auf den Superuser angewendet werden? Wie soll ich das verhindern?
Haben Sie Ihre UserProfile App zu Ihren Einstellungen hinzugefügt? Wenn nicht, wird die Tabelle nicht mit syncdb erstellt. Ihr Code sieht gut aus (zumindest auf den ersten Blick - ich habe eine sehr ähnliche Post-Save-Methode ohne Probleme implementiert). – Colleen
Auch, um klar zu sein, Ihre Aussage "Ich nehme an, dass es daran liegt, dass mein Superuser von UserProfile abhängt" ist inkorrekt - die Abhängigkeit hier geht andersherum. Ich wäre in der Tat überrascht, wenn Ihr createsuperuser-Befehl vollständig fehlgeschlagen wäre - ich wette, es hat den Superuser erstellt und das zugehörige Profil konnte nicht erstellt werden. – Colleen
Wissen Sie auch, dass die Entwickler in Django 1.5 die Anpassung des Django-Benutzermodells erlaubt haben? Wenn Sie stattdessen das Benutzermodell erweitern, müssen Sie kein separates UserProfile erstellen (Sie wissen nicht, ob Sie eigentlich beabsichtigen, dass sie getrennt sind, sondern nur einen Gedanken). – Colleen