2017-11-21 1 views
0

Models.pyWie kann ich den Fremdschlüssel in einem Modell in django

class tag_table(models.Model): 
    tag_id = models.IntegerField(unique=True) 
    book_tag = models.CharField(max_length=50,primary_key=True) 
    def __unicode__(self): 
     return self.book_tag 

class Book(models.Model): 
    book_id = models.IntegerField(primary_key = True) 
    book_author = models.CharField(max_length=50,default='') 
    book_tag = models.ForeignKey(tag_table ,on_delete=models.CASCADE,default='') 
    def __unicode__(self): 
     return (self.book_author,self.book_tag) 

Ich verwende Abfrage in interaktiv Shell (django)

Buch mit queryset drucken .objects.all() [0] .book_tag

Traceback (jüngste Aufforderung zuletzt): Datei "" Linie 1 in Datei „C: \ Python27 \ lib \ site-packages \ django-1.10.3-py2.7.egg \ django \ db \ models \ fields \ related_descriptors.py ", Zeile 1 in get rel_obj = qs.get() Datei" C: \ Python27 \ lib \ Site-Pakete \ django-1.10.3-py2.7. ei \ django \ db \ models \ query.py ", Zeile 385, in get self.model._meta.Objektname DoesNotExist: tag_table passende Abfrage existiert nicht.

Wie kann ich den Fremdschlüssel „book_tag“ zugreifen, indem Sie die Objektliste des Modells mit „Book“

Antwort

0

Ihr Datenbankschema ist falsch, da Sie MVC in Django verwenden, so müssen Sie nicht auf Relation Tabellen in der Datenbank manuell, weil es veraltet ist und es ein wenig schwer zu.

hier ist Ihre hypothetische Modelle ich es hoffe

class Book(models.Model): 
     author = models.ForeignKey(Author) 
     tags = models.ForeignKey(Book_Tags) 
     def __unicode__(self): ###__str__() in python3 
      return self.author.name 
  1. Autor helfen und Book_Tags sind zwei weitere Modelle, die Sie vor
  2. keine Notwendigkeit für id definieren sollte. Django erklärt automatisch

Sie Django web Site verwenden können, während Sie Ihre Codes schreiben. es ist sehr hilfreich

zum Beispiel zum Schreiben Ihrer Modelle erhalten Hilfe von here

Verwandte Themen