Tôi có một mô hình với một ManyToManyField tương tự với trang này (mô hình Word có một ngôn ngữ, quá):Django ManyToMany mô hình xác nhận
class Sentence(models.Model):
words = models.ManyToManyField(Word)
language = models.ForeignKey(Language)
def clean(self):
for word in self.words.all():
if word.language_id != self.language_id:
raise ValidationError('One of the words has a false language')
Khi cố gắng để thêm một câu mới (ví dụ như thông qua django admin) Tôi nhận được 'Sentence' instance needs to have a primary key value before a many-to-many relationship can be used
. Điều này có nghĩa là tôi không thể truy cập self.words trước khi lưu nó, nhưng đây chính là điều tôi đang cố gắng làm. Có cách nào để làm việc xung quanh này để bạn có thể xác nhận mô hình này tuy nhiên? Tôi thực sự muốn xác nhận trực tiếp các trường của mô hình.
Tôi đã tìm thấy nhiều câu hỏi liên quan đến ngoại lệ này, nhưng tôi không thể tìm thấy trợ giúp cho vấn đề của mình. Tôi sẽ đánh giá cao bất kỳ lời đề nghị!
Nếu bạn muốn tạo một từ, bạn sẽ xác nhận rằng nó được liên kết với một câu như thế nào? Nó không có trường 'câu' trong định nghĩa mô hình của nó. – johnklawlor
Không phải ai cũng sử dụng biểu mẫu. Tôi coi đây là một lỗ hổng lớn ở Django. Có ai có câu trả lời tốt hơn không? –