2013-11-11 3 views
2

У меня есть ошибка синтаксиса со следующим кодом:Джанго get_or_create с параметром дефолтов

ids_row={} 
ids_row["releve_annee"]=int(row[0]) 
ids_row["releve_mois"]=int(row[1]) 
ids_row["no_ordre"]=int(row[2]) 
defaults={} 
defaults["titre_rmc"]=row[3].strip() 
defaults["notes"]=row[17].strip() 
instance, created = Act.objects.get_or_create(**ids_row, defaults=defaults) 

Моя модель:

class Act(models.Model): 
    releve_annee=models.IntegerField(max_length=4, blank=False, null=False) 
    releve_mois=models.IntegerField(max_length=2, blank=False, null=False) 
    no_ordre=models.IntegerField(max_length=2, blank=False, null=False) 
    titre_rmc=models.CharField(max_length=2000, blank=False, null=False) 
    notes=models.CharField(max_length=2000, blank=True, null=True, default=None) 
     class Meta: 
     unique_together=(("releve_annee", "releve_mois", "no_ordre"),) 

В оболочке:

instance, created = Act.objects.get_or_create(**ids_row, defaults=defaults) 
                ^
SyntaxError: invalid syntax 

Если я удалить defaults=defaults , ошибка исчезает. Что не так?

ответ

8

Попробуйте изменить последовательность параметров

instance, created = Act.objects.get_or_create(defaults=defaults, **ids_row) 
+0

Wow! Оно работает! :) В чем была проблема? – rom

+3

У вас не может быть никаких аргументов * args или ** kwargs в начале любой функции. Они всегда заканчиваются. – GordonsBeard

+0

Хорошо, интересно знать. Большое спасибо вам обоим. – rom

Смежные вопросы