2017-06-01 3 views
0

Ich habe ein Projekt mit Django und definiert in den Modellen einige Tabellen, auch die Tabelle „Artikel“ ein:Django, solche Tabelle nicht gefunden

class Artikel(models.Model): 
    anr = models.IntegerField(primary_key=True) 
    anzahl = models.CharField(max_length=5) 
    bez = models.CharField(max_length=255) 
    preis = models.DecimalField(max_digits=7, decimal_places=2) 
    info = models.CharField(max_length=255) 

    def __str__(self): 
     return 'Anr: {}, Anzahl: {}'.format(self.anr, self.anzahl) 

Dann habe ich makemigration verwendet haben und wandern die definiert migrieren Tabellen zur Datenbank (runserver funktioniert auch ohne Fehler), aber wenn ich mit dem Befehl jetzt die Shell öffnen:

python manage.py shell 

wenn ich Befehle verwenden nach einem Objekt zu erstellen, und ich kann es sparen:

from shop.models import * 
a = Artikel(anr=1, anzahl=1, bez='test', preis=1.99, info='test') 
a.save() 

bekomme ich folgende Fehler nach der Methode a.save()

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "E:\Python34\lib\site-packages\django\db\models\base.py", line 796, in save 
    force_update=force_update, update_fields=update_fields) 
    File "E:\Python34\lib\site-packages\django\db\models\base.py", line 824, in save_base 
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) 
    File "E:\Python34\lib\site-packages\django\db\models\base.py", line 889, in _save_table 
    forced_update) 
    File "E:\Python34\lib\site-packages\django\db\models\base.py", line 939, in _do_update 
    return filtered._update(values) > 0 
    File "E:\Python34\lib\site-packages\django\db\models\query.py", line 654, in _update 
    return query.get_compiler(self.db).execute_sql(CURSOR) 
    File "E:\Python34\lib\site-packages\django\db\models\sql\compiler.py", line 1148, in execute_sql 
    cursor = super(SQLUpdateCompiler, self).execute_sql(result_type) 
    File "E:\Python34\lib\site-packages\django\db\models\sql\compiler.py", line 835, in execute_sql 
    cursor.execute(sql, params) 
    File "E:\Python34\lib\site-packages\django\db\backends\utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "E:\Python34\lib\site-packages\django\db\backends\utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "E:\Python34\lib\site-packages\django\db\utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "E:\Python34\lib\site-packages\django\utils\six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "E:\Python34\lib\site-packages\django\db\backends\utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "E:\Python34\lib\site-packages\django\db\backends\sqlite3\base.py", line 337, in execute 
    return Database.Cursor.execute(self, query, params) 
django.db.utils.OperationalError: no such table: shop_artikel 

erzeugten Datenmigration:

from __future__ import unicode_literals 

from django.db import migrations, models 
import django.db.models.deletion 


class Migration(migrations.Migration): 

initial = True 

dependencies = [ 
] 

operations = [ 
    migrations.CreateModel(
     name='Adresse', 
     fields=[ 
      ('strasse', models.CharField(max_length=255, primary_key=True)), 
      ('hnr', models.IntegerField(primary_key=True)), 
      ('plz', models.CharField(max_length=20, primary_key=True, serialize=False)), 
      ('ort', models.CharField(max_length=255, primary_key=True)), 
     ], 
     options={ 
      'verbose_name_plural': 'Adressen', 
     }, 
    ), 
    migrations.CreateModel(
     name='Artikel', 
     fields=[ 
      ('anr', models.IntegerField(primary_key=True, serialize=False)), 
      ('anzahl', models.CharField(max_length=5)), 
      ('bez', models.CharField(max_length=255)), 
      ('preis', models.DecimalField(decimal_places=2, max_digits=7)), 
      ('info', models.CharField(max_length=255)), 
     ], 
    ), 
    migrations.CreateModel(
     name='Bestellung', 
     fields=[ 
      ('bestellnummer', models.IntegerField(primary_key=True, serialize=False)), 
      ('datum', models.DateField()), 
      ('status', models.CharField(max_length=20)), 
     ], 
    ), 
    migrations.CreateModel(
     name='Feedback', 
     fields=[ 
      ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 
      ('bemerkung', models.CharField(max_length=255)), 
      ('datum', models.DateField()), 
     ], 
    ), 
    migrations.CreateModel(
     name='Kunde', 
     fields=[ 
      ('knr', models.IntegerField(primary_key=True, serialize=False)), 
      ('name', models.CharField(max_length=255)), 
      ('email', models.CharField(max_length=255)), 
      ('zuletzt_online', models.DateField(null=True)), 
      ('adresse', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.Adresse')), 
     ], 
    ), 
    migrations.CreateModel(
     name='Land', 
     fields=[ 
      ('name', models.CharField(max_length=255, primary_key=True, serialize=False)), 
     ], 
    ), 
    migrations.CreateModel(
     name='Warenkorb', 
     fields=[ 
      ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 
      ('anzahl', models.CharField(max_length=3)), 
     ], 
    ), 
    migrations.CreateModel(
     name='Bluray', 
     fields=[ 
      ('artikel_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='shop.Artikel')), 
      ('regisseur', models.CharField(max_length=50)), 
      ('jahr', models.DateField()), 
      ('genre', models.CharField(max_length=50)), 
     ], 
     bases=('shop.artikel',), 
    ), 
    migrations.CreateModel(
     name='Buch', 
     fields=[ 
      ('artikel_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='shop.Artikel')), 
      ('autor', models.CharField(max_length=50)), 
      ('verlag', models.CharField(max_length=50)), 
      ('isbn', models.CharField(max_length=13)), 
     ], 
     bases=('shop.artikel',), 
    ), 
    migrations.CreateModel(
     name='SonstigerArtikel', 
     fields=[ 
      ('artikel_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='shop.Artikel')), 
     ], 
     bases=('shop.artikel',), 
    ), 
    migrations.AddField(
     model_name='warenkorb', 
     name='artikel', 
     field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.Artikel'), 
    ), 
    migrations.AddField(
     model_name='warenkorb', 
     name='bestellung', 
     field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.Bestellung'), 
    ), 
    migrations.AddField(
     model_name='feedback', 
     name='artikel', 
     field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.Artikel'), 
    ), 
    migrations.AddField(
     model_name='feedback', 
     name='kunde', 
     field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.Kunde'), 
    ), 
    migrations.AddField(
     model_name='bestellung', 
     name='artikel', 
     field=models.ManyToManyField(through='shop.Warenkorb', to='shop.Artikel'), 
    ), 
    migrations.AddField(
     model_name='bestellung', 
     name='kunde', 
     field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.Kunde'), 
    ), 
    migrations.AddField(
     model_name='bestellung', 
     name='lieferadr', 
     field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.Adresse'), 
    ), 
    migrations.AddField(
     model_name='adresse', 
     name='land', 
     field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='shop.Land'), 
    ), 
] 
+0

Können Sie die generierte Migrationsdatei hinzufügen? –

Antwort

2

Löschen Ihre Migrationen Dateien und die Datenbank löschen und neu erstellen. Dann

rm -r shop/migrations 
rm -rf db.sqlite3 

python manage.py makemigrations 
python manage.py migrate 

Sie sicher, dass Sie hinzugefügt haben "Shop" in INSTALLED_APPS in Ihrem settings.py

dann die Schale öffnen, versuchen Sie es erneut das gleiche.

+0

Danke, jetzt funktioniert es. – Meister96Fels

+0

Können Sie mir einen Gefallen tun und die Antwort als ausgewählt markieren? – zaidfazil

+0

Ich kann es kurz markieren, ich bekomme immer noch die Nachricht "Sie können eine Antwort in 2 Minuten akzeptieren". – Meister96Fels

Verwandte Themen