python - एसक्यूएललेमी परिपत्र निर्भरता-इसे कैसे हल करें?



sqlalchemy circular-dependency (1)

मेरे पास दो तालिकाओं, News और Files :

# unrelated columns removed
class News(db.Model): 
    id = db.Column(db.Integer, primary_key=True)
    file_id_logo = db.Column(db.Integer, db.ForeignKey('files.id'))
    logo = db.relationship('File', lazy=False)

class File(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    news_id = db.Column(db.Integer, db.ForeignKey('news.id'))
    news = db.relationship('News', lazy=False, backref=db.backref('files'))

file_id_logo fkey जोड़ने के बाद, SQLalchemy ने एक परिपत्र निर्भरता त्रुटि उठाई मैंने पहले ही logo संबंध में post_update=True की कोशिश की है, लेकिन उसने कुछ भी नहीं बदला।

इसको हल करने का सही तरीका क्या है?

निम्न मामलों में संभव (मामले में यह मामला):

  • एक फ़ाइल में कोई भी या बिल्कुल एक समाचार निर्दिष्ट नहीं है।
  • यदि कोई फाइल में कोई समाचार नहीं है, तो इसके लोगो के संदर्भ में इस फाइल के साथ कोई भी समाचार नहीं है।
  • एक समाचार के लिए कई फाइलें हो सकती हैं, लेकिन इन फ़ाइलों में से केवल एक ही इसका logo हो सकता है।
  • इसलिए यदि एक समाचार में एक logo , तो संदर्भित फाइल में इसकी news भी है

use_alter - अंतर्निहित विदेशी कियंत्रण को पारित करने के लिए संकेत करने के लिए बाध्यता उत्पन्न / उत्पन्न तालिका / ड्रॉप तालिका बयान से बाहर निकाल दिया जाना चाहिए। विवरण के लिए उस कक्षा के कन्स्ट्रक्टर को देखें।

http://docs.sqlalchemy.org/en/rel_0_8/core/schema.html?highlight=use_alter#foreign-key-api-constructs





circular-dependency