bạn có thể giúp tôi hiểu tại sao mã này gây ra một mục trùng lặp (IntegrityError)?Django - get_or_create không hoạt động
Tôi đang ở trên Django 1.2.
(row, is_new) = MyModel.objects.get_or_create(field1=1)
row.other_field = 2
row.save()
Tôi có một ràng buộc duy nhất trên trường1. Nếu có một hàng mà field1 = 1, mọi thứ hoạt động tốt, Django sẽ thực hiện "get".
Nếu không có hàng có field1 = 1, có vẻ như Django đang tạo hàng đó là ok. Nhưng tại sao nó không cho phép tôi cứu nó?
Cập nhật:
Nếu nó giúp, đây là MyModel:
class MyModel(models.Model):
id = models.BigIntegerField(primary_key=True)
field1 = models.BigIntegerField(unique=True)
other_field = models.CharField(max_length=765)
class Meta:
db_table = u'project_crosses_suppl_FO'
field1 là khóa ngoại đến bảng khác. Nhưng tôi đã không làm một mô hình ở Django cho bảng đó vì vậy tôi không nói với Django đó là một khóa ngoại.
Liệu MyModel có trường nước ngoài? Bạn có thể đăng mã MyModel không? –
[Câu hỏi tương tự này] (http://stackoverflow.com/questions/6974463/django-get-or-create-raises-duplicate-entry-with-together-unique) có thể giúp bạn. – agf
@agf. Tôi không hiểu độ phân giải của câu hỏi đó là gì, hoặc vấn đề được biện minh như thế nào. Nghe có vẻ như là một lỗi đối với tôi. Tôi nghĩ tôi sẽ từ bỏ get_or_create và làm một công việc xung quanh :-( – Greg