Django: ตัวเข้าถึงย้อนกลับสำหรับการปะทะกันของคีย์ต่างประเทศ


114

ฉันมี Django สองรุ่นที่สืบทอดมาจากคลาสพื้นฐาน:

- Request
    - Inquiry
    - Analysis

คำขอมีคีย์ต่างประเทศสองรายการสำหรับโมเดลผู้ใช้ในตัว

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

ด้วยเหตุผลบางประการฉันได้รับข้อผิดพลาด

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

ทุกสิ่งที่ฉันอ่านบอกว่าการตั้งค่าrelated_nameควรป้องกันการปะทะ แต่ฉันยังคงได้รับข้อผิดพลาดเดิม ใครสามารถคิดว่าทำไมถึงเกิดขึ้น? ขอบคุณ!


1
คุณสามารถโพสต์คำจำกัดความของโมเดลของคุณรวมถึงInquiryและAnalysisและความสัมพันธ์ของพวกเขาไปที่Request
dm03514

อัปเดตลิงค์สำหรับชื่อที่เกี่ยวข้องใน Django 1.9
Seb

คำตอบ:


139

เพื่อrelated_nameให้แน่ใจว่าฟิลด์ไม่ขัดแย้งกัน แต่คุณมีสองโมเดลซึ่งแต่ละฟิลด์มีทั้งสองฟิลด์ คุณต้องใส่ชื่อของแบบจำลองคอนกรีตในแต่ละแบบซึ่งคุณสามารถทำได้ด้วยการแทนที่สตริงพิเศษ:

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

1
ลิงก์ในคำตอบของคุณตายแล้ว
Matt D

2
@MatthewDrill ฉันส่งการแก้ไขเพื่อแก้ไขในระหว่างนี้ลองdocs.djangoproject.com/th/1.10/topics/db/models/…
Ivan

ตอบโจทย์มาก! ขอบคุณ!
Tms91
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.