Tôi thấy một số ppl gặp vấn đề này trước tôi, nhưng trên các phiên bản cũ của Django, và tôi đang chạy trên 1.2.1.Django unique_together không hoạt động với ForeignKey = None
Tôi có một mô hình trông giống như:
class Category(models.Model):
objects = CategoryManager()
name = models.CharField(max_length=30, blank=False, null=False)
parent = models.ForeignKey('self', null=True, blank=True, help_text=_('The direct parent category.'))
class Meta:
unique_together = ('name', 'parent')
Bất cứ khi nào tôi cố gắng để tiết kiệm trong quản trị một loại với cha mẹ thiết lập để Không, nó vẫn hoạt động khi có một loại với cùng tên và bộ cha mẹ thành Không.
Ý tưởng về cách giải quyết điều này một cách duyên dáng?
Cách tiếp cận chung có vẻ tốt ở đây, nhưng tôi không theo logic của 'if self.parent và Category.objects.filter (name = self.name) .exists():' Điều đó trông giống như tôi đang kiểm tra xem cha mẹ có tồn tại hay không và một danh mục khác có cùng tên tồn tại. Làm thế nào là những gì chúng tôi muốn? Không nên điều này thay vì là một cái gì đó như (chưa được kiểm tra) 'nếu self.parent == Không có và FolderUpload.objects.filter (tên = self.name, parent = None) .exists():'? –
Tôi nghĩ bạn nói đúng. Tôi sẽ sử dụng parent_id__is null = True thay vì parent = None. Nó có thể cần một loại trừ() để bỏ qua đối tượng hiện tại là tốt. – Alasdair
Tôi sẽ vắng mặt trong một tuần, vì vậy sẽ không thể sửa câu trả lời. Vui lòng chỉnh sửa nếu bạn muốn/có thể. – Alasdair