एप्लिकेशन में मैं काम कर रहा हूं मैं एक कंपनी के भीतर एक्सेस टोकन साझा करने की कोशिश कर रहा हूं। उदाहरण: एक स्थानीय कार्यालय अपने फेसबुक पेज पर कुछ पोस्ट करने के लिए मुख्यालय के टोकन का उपयोग कर सकता है।Django: GenericForeignKey और unique_together
class AccessToken(models.Model):
"""Abstract class for Access tokens."""
owner = models.ForeignKey('publish.Publisher')
socialMediaChannel = models.IntegerField(
choices=socialMediaChannelList, null=False, blank=False
)
lastUpdate = models.DateField(auto_now=True)
class Meta:
abstract = True
के बाद से फेसबुक, ट्विटर और अन्य सामाजिक मीडिया साइटों अपने तरीके से मैंने बनाया और अमूर्त वर्ग AccessToken में पहुंच टोकन को संभाल। प्रत्येक साइट को अपनी कक्षा मिलती है उदा।
class FacebookAccessToken(AccessToken):
# class stuff
कुछ पढ़ने मुझे पता चला कि मैं वर्गों है कि AccessToken
वारिस को इंगित करने के लिए एक GenericForeignKey
का उपयोग करना चाहिए करने के बाद।
class ShareAccessToken(models.Model):
"""Share access tokens with other publishers."""
sharedWith = models.ForeignKey('publish.Publisher')
sharedBy = models.ForeignKey(User)
# for foreignkey to abstract model's children
contentType = models.ForeignKey(ContentType)
objectId = models.PositiveIntegerField()
contentObject = GenericForeignKey('contentType', 'objectId')
class Meta:
unique_together = (('contentObject', 'sharedWith'))
जब मैं Django परीक्षण सर्वर मैं निम्नलिखित त्रुटि मिलती है चलाएँ:: क्यों मैं इस त्रुटि मिलती है
core.ShareAccessToken: (models.E016) 'unique_together' refers to field 'contentObject' which is not local to model 'ShareAccessToken'. HINT: This issue may be caused by multi-table inheritance.
मुझे समझ नहीं आता पहली बार GenericForeignKey
का उपयोग कर, मैं निम्नलिखित वर्ग बनाया है। मैं क्या गलत कर रहा हूं?
यदि एक्सेस टोकन साझा करने का कोई आसान तरीका है तो मुझे इसके बारे में सुनना अच्छा लगेगा।
उत्तर के लिए धन्यवाद। – CyberFly
मुझे लगता है कि आप 'contentId' के बजाय' objectId' का मतलब था। –