16👍
As @inception said my tables schema had changed & running syncdb
did not update already created tables.
Apparently any changes to the models when updated through syncdb
does not change (as in update/modify) the actual tables. So I dropped the relevant DB & ran syncdb
on empty DB. Now it works fine. 🙂
For others, SOUTH data migration tool for Django seems to be favorite option. It seems to provide options which django models & syncdb
falls short on. Must check out…
Update 29th Sept 2019: From Django 1.7 upwards, migrations are built into the core of Django. If you are running a previous lower version of Django, you can find the repository on BitBucket.
28👍
maybe your tables schema has been changed? Also, running syncdb
does not update already created tables.
You might need to drop all the tables & then run syncdb
again. Also remember to take backup of your data!!
- [Django]-Pass extra arguments to Serializer Class in Django Rest Framework
- [Django]-How to create a user in Django?
- [Django]-Django Rest Framework – APIView Pagination
6👍
Normally I get this when when I’m trying to access field which doesn’t exist in Database.
Check if the field exist in the database. If you change model and perform syncdb it won’t update the database, I’m not sure if that’s the case.
On other note Django offers shortcut to replace try/except block in your code using get_object_or_404. (available in django.shortcuts )
try:
user = User.objects.get(username=username)
except:
raise Http404('Requested user not found.')
can be changed to:
user = get_object_or_404(User, username=username)
- [Django]-Django string to date format
- [Django]-Default filter in Django model
- [Django]-How to send email via Django?
4👍
I have met the same problems:
First, run
manage.py sqlall [appname]
and you can find:
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
and I add the column manual:
ALTER TABLE tb_realtime_data ADD id integer AUTO_INCREMENT NOT NULL PRIMARY KEY FIRST;
and then it worked.
I think django will add the column called id itself.
For convenience, each model is given an autoincrementing primary key field named id unless you explicitly specify primary_key=True on a field (see the section titled “AutoField” in Appendix A).
you can click here for details.
Good luck.
- [Django]-Django Rest Framework: Disable field update after object is created
- [Django]-Get current user in Model Serializer
- [Django]-Handling race condition in model.save()
4👍
I faced the same error like you posted above with MySQL database back-end, after long time of resolving this error, I ended up with below solution.
-
Manually added column to database through workbench with name exactly the same as it is shown in your error message.
-
After that run below command
python manage.py makemigrations
Now migrations will be successfully created
- After that run below command
python manage.py migrate --fake
Now every thing works fine without any data lose issue
- [Django]-URL-parameters and logic in Django class-based views (TemplateView)
- [Django]-How to manage local vs production settings in Django?
- [Django]-How to access the user profile in a Django template?
- [Django]-Django: How can I create a multiple select form?
- [Django]-Django, template context processors
- [Django]-Django Rest Framework: Disable field update after object is created
1👍
This is quite an old question but you might find the below useful anyway:
Check the database, you’re most likely missing the show_id
in the appname_usershow
table.
This could occur when you change or add a field but you forget running migration.
OR
When you’re accessing a non managed table and you’re trying to add a ForeignKey
to your model.
Following the example above:
class UserShow(models.Model):
# some attributes ...
show = models.ForeignKey(Show, models.DO_NOTHING)
class Meta:
managed = False
db_table = 'appname_departments'
- [Django]-Django REST Framework custom fields validation
- [Django]-Why does django ORM's `save` method not return the saved object?
- [Django]-How to make a POST simple JSON using Django REST Framework? CSRF token missing or incorrect
1👍
This is a late response but hopefully someone will find this useful.
I was working on Django REST APIs using DB models. When I added a new column to my existing model(said column already existed in the db table from the start), I received the error shown below:
"Unknown column ‘,column name>’ in ‘field list’"executed".
What I missed was migrating the model over to the database.
So I executed the following commands from python terminal:
-
py -3 manage.py makemigrations —> It will not allow NULL values for the new column added to the model, even though the column is present in the database from the start. So you need to add a default value, mine was an Integerfield, so I updated my column definition in the model as IntegerField(default=0).
From here onwards it should be straightforward, if there are no other errors. -
py -3 manage.py migrate
-
py -3 manage.py runserver
After executing these steps when I called my REST APIs they were working properly.
- [Django]-Django migration fails with "__fake__.DoesNotExist: Permission matching query does not exist."
- [Django]-How do I start up remote debugging with PyCharm?
- [Django]-Django gunicorn sock file not created by wsgi
0👍
I created a model file for my app and then did several sqlall
as I refined my tables. One of the changes I made was I set primary_key=True
to one of my fields. At the end called for syncdb
. Added a dummy value and and tried to access it with User.objects.all()
, User
being my model class. Although this worked fine, this error came up while printing the list returned by the all()
call. It read DatabaseError: (1054, "Unknown column 'polls_user.id' in 'field list'")
Surprisingly, I tried and could get it resolved with another call to syncdb
. I remember not having seen the id column in the table at any time throughout the exercise when I checked it through the mysql command line client.
- [Django]-Sending an SMS to a Cellphone using Django
- [Django]-Can you change a field label in the Django Admin application?
- [Django]-Error trying to install Postgres for python (psycopg2)
0👍
I received this error while trying to use Django Rest Framework serializers. Make sure if you have a serializer that subclasses ModelSerializer
, that you migrate any changes to the Models before writing your serializer classes (or just comment anything related to the serializer, migrate, then uncomment).
- [Django]-How to squash recent Django migrations?
- [Django]-Target WSGI script cannot be loaded as Python module
- [Django]-What does error mean? : "Forbidden (Referer checking failed – no Referer.):"
0👍
PS F:\WebApp> python manage.py makemigrations
You are trying to add a non-nullable field ‘price’ to destination without a default; we can’t do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit, and let me add a default in models.py
Select an option: 2
PS F:\WebApp> python manage.py sqlmigrate travello 0001
BEGIN;
— Create model Destination
CREATE TABLE travello_destination
(id
integer AUTO_INCREMENT NOT NULL PRIMARY KEY, name
varchar(100) NOT NULL, img
varchar(100) NOT NULL, desc
longtext NOT NULL, offer
bool NOT NULL);
COMMIT;
PS F:\WebApp> python manage.py makemigrations
Migrations for ‘travello’:
travello\migrations\0002_destination_price.py
– Add field price to destination
PS F:\WebApp> python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, travello
Running migrations:
Applying travello.0002_destination_price… OK
- [Django]-Django accessing ManyToMany fields from post_save signal
- [Django]-Setting DEBUG = False causes 500 Error
- [Django]-Why is __init__ module in django project loaded twice
0👍
I had this issue when using a composite Primary Key of several VarChar
fields and trying to call a table_set.all()
queryset.
Django wanted a table_name_id
PK column for this queryset, there wasn’t one so it threw out this error.
I fixed it by manually creating the table_name_id
and setting it to an auto-incremented, integer PK column instead of the composite PK.
I then specified those VarChar
composite columns as unique_together
in the Model’s meta section so they act like a PK.
- [Django]-Django gives Bad Request (400) when DEBUG = False
- [Django]-Why is iterating through a large Django QuerySet consuming massive amounts of memory?
- [Django]-How to use UUID
0👍
The model of the app which has that field you have to run two commands.
python manage.py migrate appname zero
python manage.py migrate
- [Django]-How can I return HTTP status code 204 from a Django view?
- [Django]-Django Rest JWT login using username or email?
- [Django]-How to handle request.GET with multiple variables for the same parameter in Django
-2👍
The direct solution is delete files under folder ../Project/App/migrations, and the method to avoid this problem is create new databaes table column instead of chagne the existing one.
- [Django]-Django admin ManyToMany inline "has no ForeignKey to" error
- [Django]-Django JSONField inside ArrayField
- [Django]-Django admin action without selecting objects