2017-05-02 4 views
0

ich einen Eintrag in Django Modell erschaffe, aber es Valueerror für ein Feld zeigt, dass nicht einmalbekommen eine seltsame Valueerror in in django Modell Eintrag

gibt es mir in manage.py Shell externes Skript bin mit mit

python3 manage.py shell 

>>> exec(open('file_name.py').read()) 

file_name.py (den Namen ignorieren: D)

from jtc.models import * 

m = Movies.objects.get(title__icontains = "Badrinath") 
mul = Multiplex.objects.get(movie__icontains = 'Badrinath', name = "PVR") 
date = mul.date.all() 
time = mul.time.all() 
seat = Snumber.objects.filter(seat_avail = True) 

st = Snumber.objects.get(seat_avail = True, seat_name = 'A1') 
dt = Date.objects.get(date = '2017-05-10') 
tm = Time.objects.get(timing='09:00:00') 

Seats.objects.bulk_create(
    [ 
     Seats(movie_name = m, multiplex_name = mul, 
       seat_no = st, date = dt, time=tm), 
    ] 
) 

Dies ist Fehler, die ich

immer bin
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "<string>", line 23, in <module> 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py", line 550, in __init__ 
    setattr(self, prop, kwargs[prop]) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/related_descriptors.py", line 499, in __set__ 
    manager = self.__get__(instance) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/related_descriptors.py", line 476, in __get__ 
    return self.related_manager_cls(instance) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/related_descriptors.py", line 783, in __init__ 
    (instance, self.source_field_name)) 
ValueError: "<Seats: PVR Dehradun Badrinath ki dulhaniya 2017-05-10 09:00:00>" needs to have a value for field "seats" before this many-to-many relationship can be used. 

Das ist mein Sitze Modell

class Seats(models.Model): 
    seat_no = models.ManyToManyField(Snumber) 
    movie_name = models.ForeignKey(Movies) 
    multiplex_name = models.ForeignKey(Multiplex) 
    date = models.ForeignKey(Date) 
    time = models.ForeignKey(Time) 

    def __str__(self): 
     b = str(self.date) 
     c = str(self.time) 
     d = str(self.multiplex_name) 
     return d+" "+b+" "+c 
+0

Wie wäre es 'import file_name'? –

+0

Sie sollten das Sitzmodell zeigen. Und warum verwenden Sie 'bulk_create', um nur ein einzelnes Objekt zu erstellen? –

+0

@DanielRoseman Ich habe mein Sitzmodell hinzugefügt und der Grund, warum ich bulk_create() verwende, ist, dass ich ungefähr 612 Einträge einfügen muss, aber den Fehler bekommen, also ignoriere die Verwendung von bulk_create. Ich habe auch versucht, einen einzigen Eintrag mit 'Seats.objects.create (... gleichen Code ..)' einzugeben, aber mit dem gleichen ValueError – rand0mb0t

Antwort

1

In diesem Fall ist die Fehlermeldung nicht sehr hilfreich. Was es zu sagen versucht, ist, dass Sie eine ManyToMany-Beziehung nicht speichern können, bis Sie eine ID für beide Objekte haben. Sie müssen eine Instanz von Seats zuerst, speichern und dann das ManyToMany Feld hinzufügen:

seats = Seats.objects.create(movie_name=m, multiplex_name=mul, 
    date=dt, time=tm) 
seats.seat_no.add(st) 

Sie können in den docs mehr darüber lesen.

+0

Vielen Dank für das Problem. Es funktioniert gut für mich, jetzt ist meine Arbeit abgeschlossen – rand0mb0t

0

In dieser Zeile

Seats.objects.bulk_create(
    [ 
     Seats(movie_name = m, multiplex_name = mul, 
       seat_no = st, date = dt, time=tm, seats = 1), 
    ] 
) 

Sie seats = 1 setzen. Aber das Seats Modell hat kein seats Feld. Dies ist wahrscheinlich der Grund, warum Sie den Fehler erhalten.

+0

Ich habe falschen Code hochgeladen. Ich habe versucht, dass "Sitze = 1", nachdem ich diesen Fehler aber immer noch bekam. Hilfe! – rand0mb0t

+0

Ich habe meinen Post mit dem ursprünglichen Code bearbeitet, der Fehler ohne Sitze = 1 erzeugte – rand0mb0t

+0

Können Sie Ihre anderen Modelle z. Snumber, Multiplex usw.? Können Sie auch jede Zeile einzeln im Terminal ausführen und prüfen, welche Zeile den Fehler verursacht? –

Verwandte Themen