Mein UserProfile funktionierte gut, bis ich das Modell und Form änderte. Ich habe ein DateField im Modell hinzugefügt und meine Forms.py und Vorlage aktualisiert. Habe auch eine Syncdb gemacht.Fehler nach dem Hinzufügen eines neuen Feldes in Django Models
profile/models.py
class UserProfiles(models.Model):
user = models.OneToOneField(User)
#other fields here
birthday = models.DateField()
profile/forms.py
class UserProfileForm(ModelForm):
class Meta:
model = UserProfiles
fields = ('some_field', 'birthday', 'otherfields')
profile/views.py
def editprofile(request):
return render_to_response('profile_edit.html', {'form':UserProfileForm()}, context_instance=RequestContext(request))
Dies ist der Fehler, den es zu werfen ist.
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "E:\django-sample\proschools\..\proschools\profile\views.py" in generateprofile
12. userprofile = UserProfiles.objects.get(user=request.user)
File "C:\Python27\lib\site-packages\django\db\models\manager.py" in get
132. return self.get_query_set().get(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in get
344. num = len(clone)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in __len__
82. self._result_cache = list(self.iterator())
File "C:\Python27\lib\site-packages\django\db\models\query.py" in iterator
273. for row in compiler.results_iter():
File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" in results_iter
680. for rows in self.execute_sql(MULTI):
File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
735. cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
34. return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\mysql\base.py" in execute
86. return self.cursor.execute(query, args)
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py" in execute
174. self.errorhandler(self, exc, value)
File "C:\Python27\lib\site-packages\MySQLdb\connections.py" in defaulterrorhandler
36. raise errorclass, errorvalue
Exception Type: OperationalError at /profile/
Exception Value: (1054, "Unknown column 'profile_userprofiles.birthday' in 'field list'")
Wenn ich manuell erstelle, gibt es irgendwelche Vorsichtsmaßnahmen? Oder ich gehe einfach und fügen Sie manuell die Tabelle mit mysql workbench hinzu und das ist es? – John
@John Idealerweise verwenden Sie die South App. Für nur eine Spalte kann es jedoch mühsam sein. Die Ausführung von [sqlall] (https://docs.djangoproject.com/en/dev/ref/django-admin/#sqlall-appname-appname) auf Ihrer spezifischen 'app' sagt Ihnen genau, was DDL-Syntax Django selbst verwendet hätte erstelle es. –