2016-06-06 3 views
0

Ich habe zu bekommen:Wie Modellobjekt zu viele zu viele Feld in django.1.9 hinzuzufügen und nicht Typeerror

Author(models.Model): 
    name=models.CharField("name", max_length=100) 
Entry(models.Model): 
    (...) 
    authors = models.ManyToMany(Author, blank=true) 

def findAuthors(input): 
    (...) 
    authors = [] 
    for name in names: 
     authors.append(Author.objects.get_or_create(name=name)) 
    return authors 

und ich versuche zu tun:

e = Entry.objects.first() #for exmple 
authors = findAuthors() 
if authors: 
    for author in authors: 
     e.authors.add(author) 

Warum erhalte ich der folgende Fehler?

TypeError: int() argument must be a string, a bytes-like object or a number, not 'Author'` 

Antwort

1

Die Methode gibt ein Tupel zurück, nicht nur das Objekt. Sie können das Problem beheben, indem Sie Ihren Code folgendermaßen ändern:

authors = [] 
for name in names: 
    author, created = Author.objects.get_or_create(name=name) 
    authors.append(author) 
    return authors 
Verwandte Themen