Django: trình truy cập ngược cho xung đột khóa ngoại


113

Tôi có hai mô hình Django kế thừa từ một lớp cơ sở:

- Request
    - Inquiry
    - Analysis

Yêu cầu có hai khóa ngoại đối với mô hình Người dùng tích hợp.

create_user = models.ForeignKey(User, related_name='requests_created')
assign_user = models.ForeignKey(User, related_name='requests_assigned')

Vì lý do nào đó, tôi gặp lỗi

Reverse accessor for 'Analysis.assign_user' clashes with reverse accessor for 'Inquiry.assign_user'.

Mọi thứ tôi đã đọc nói rằng thiết lập related_namesẽ ngăn chặn cuộc đụng độ, nhưng tôi vẫn gặp lỗi tương tự. Bất cứ ai có thể nghĩ về lý do tại sao điều này sẽ xảy ra? Cảm ơn!


1
Bạn có thể vui lòng đăng các định nghĩa về mô hình của mình, bao gồm InquiryAnalysisvà mối quan hệ của chúng tớiRequest
dm03514

cập nhật liên kết cho tên liên quan trong Django 1.9
Seb

Câu trả lời:


138

Điều related_namenày sẽ đảm bảo rằng các trường không xung đột với nhau, nhưng bạn có hai mô hình, mỗi mô hình có cả hai trường đó. Bạn cần đặt tên của mô hình cụ thể trong mỗi cái, bạn có thể thực hiện điều này với một số thay thế chuỗi đặc biệt :

 create_user = models.ForeignKey(User, related_name='%(class)s_requests_created')

1
Liên kết trong câu trả lời của bạn đã chết.
Matt D

2
@MatthewDrill Tôi đã gửi bản chỉnh sửa để sửa nó, trong thời gian chờ đợi, hãy thử docs.djangoproject.com/en/1.10/topics/db/models/…
Ivan

Câu trả lời chính xác! Cảm ơn bạn!
Tms91
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.