2011-11-14 20 views
5

Tôi nhận được lỗi save() got an unexpected keyword argument 'force_insert'. Từ http://groups.google.com/group/django-users/browse_thread/thread/2471efd68d56ad59 này có vẻ như câu trả lời là sử dụng:Django save() có một đối số từ khóa không mong muốn 'force_insert' lỗi

def save(self, *args, **kwargs): 
... 
    super(SiteUser, self).save(*args, **kwargs) 

Câu hỏi của tôi là làm thế nào bạn sẽ đi về cách xác định force_insert=True hoặc force_insert=False khi làm điều đó.

Mã của tôi là:

def save(self, force_insert=False, force_update=False): 
     if not self.id: 
     self.pub_date = datetime.datetime.now() 
     self.updated_date = datetime.datetime.now() 
     self.description_html = markdown(self.description) 
     self.highlighted_code = self.highlight() 
     super(Snippet, self).save(force_insert, force_update) 

Trả lời

3

kwargs là một dict. Đặt nó như bạn sẽ làm bất kỳ giá trị dict khác.

kwargs['force_insert'] = True 
+0

Tôi có thể thấy rằng hoạt động nếu bạn muốn ghi đè giá trị, nhưng làm cách nào bạn chỉ định giá trị đó làm giá trị mặc định như trong mã của tôi? – Superdooperhero

+0

Kiểm tra xem nó đã tồn tại trong từ điển trước chưa. –

+0

Thay đổi mã của tôi để: def lưu (tự, * args, ** kwargs): nếu không muốn nói 'force_insert' trong kwargs: kwargs [ 'force_insert'] = False nếu không muốn nói 'force_update' trong kwargs: kwargs [' force_update '] = False nếu không self.id: self.pub_date = datetime.datetime.now() self.updated_date = datetime.datetime.now() self.description_html = markdown (self.description) self. highlight_code = self.highlight() siêu (Đoạn trích, tự) .save (* args, ** kwargs) Nhưng vẫn gặp lỗi tương tự. Là force_insert không còn được hỗ trợ trong Django 1.3.1 hoặc những gì tôi làm sai? – Superdooperhero

Các vấn đề liên quan