2009-07-08 30 views
37

Tôi cần phải sử dụng một cái gì đó như get_or_create() nhưng vấn đề là tôi có rất nhiều lĩnh vực và tôi không muốn đặt mặc định (mà không có ý nghĩa anyway), và nếu tôi không thiết lập mặc định nó trả về một lỗi, bởi vì nó lưu các đối tượng ngay lập tức rõ ràng.Get_or_create() có phải lưu ngay không? (Django)

Tôi có thể đặt các trường thành rỗng = Đúng, nhưng tôi không muốn các trường rỗng.

Có phương pháp nào khác hoặc bất kỳ tham số bổ sung nào có thể được gửi đến get_or_create() để nó instantiates một đối tượng nhưng không lưu nó cho đến khi tôi gọi save() trên nó?

Cảm ơn.

Trả lời

37

Bạn chỉ có thể làm:

try: 
    obj = Model.objects.get(**kwargs) 
except Model.DoesNotExist: 
    obj = Model(**dict((k,v) for (k,v) in kwargs.items() if '__' not in k)) 

đó là khá nhiều những gì get_or_create làm, sans cam kết.

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