creates virtual relation to the translation with model cache enabled avoid validation disable reverse relation set unique to enable model cache add virtual relation to the articletranslation model creates virtual relation to the translation with model cache enabled avoid validation disable reverse relation set unique to enable model cache add virtual relation to the articletranslation model
from django.db import models


class CurrentTranslation(models.ForeignObject):
    

    
    requires_unique_target = False

    def __init__(self, to, on_delete, from_fields, to_fields, **kwargs):
        
        kwargs["related_name"] = "+"
        
        kwargs["unique"] = True
        super().__init__(to, on_delete, from_fields, to_fields, **kwargs)


class ArticleTranslation(models.Model):
    article = models.ForeignKey("indexes.Article", models.CASCADE)
    article_no_constraint = models.ForeignKey(
        "indexes.Article", models.CASCADE, db_constraint=False, related_name="+"
    )
    language = models.CharField(max_length=10, unique=True)
    content = models.TextField()


class Article(models.Model):
    headline = models.CharField(max_length=100)
    pub_date = models.DateTimeField()
    published = models.BooleanField(default=False)

    
    translation = CurrentTranslation(
        ArticleTranslation, models.CASCADE, ["id"], ["article"]
    )

    class Meta:
        indexes = [models.Index(fields=["headline", "pub_date"])]


class IndexedArticle(models.Model):
    headline = models.CharField(max_length=100, db_index=True)
    body = models.TextField(db_index=True)
    slug = models.CharField(max_length=40, unique=True)

    class Meta:
        required_db_features = {"supports_index_on_text_field"}


class IndexedArticle2(models.Model):
    headline = models.CharField(max_length=100)
    body = models.TextField()