Django - Невозможно объединить 2 модели

Проблема: Объединение 2 моделей в Django.

Error: Ошибка при отрисовке шаблона. Прямое присвоение обратной стороне множества "многие ко многим" запрещено. Вместо этого используйте entity_id.set().

Я прочитал все темы на SO. Попробовал все предложенные решения, прочитал документацию Django и думаю, что я просто должен быть фундаментально неправильно понимаю что-то. Любая помощь будет очень признательна.

У меня есть 2 модели. Entity и File.

У Entity может быть несколько Files, но каждый File имеет только 1 Entity.

Первичные ключи каждой таблицы - это просто целые числа с автоматическим инкрементом. Поэтому я хочу объединить столбец entity_id из File с entity_id из Entity. Согласно документации я установил entity_id в File в качестве ForeignKey. И я установил entity_id как уникальный в Entity

class Entity(models.Model):
    pk_entity = models.AutoField(primary_key=True)
    entity_id = models.IntegerField(blank=True, null=True, unique=True)  
    name = models.CharField(blank=True, null=True)
    
    class Meta:
        managed = False
        db_table = 'entities'


class File(models.Model):
    pk_file = models.AutoField(primary_key=True)
    filename = models.CharField(blank=True, null=True)    
    entity_id = models.ForeignKey(Entity, on_delete= models.CASCADE, to_field='entity_id')
    

Представление просто пытается отобразить это. Я пробовал использовать .all(), а не select_related(), но данные не отображаются.

class TestListView(ListView):  
    queryset = File.objects.select_related()    
    template_name = "operations/files/test_list.html"

А это html:

{% extends "base.html" %}
{% block content %}
<div>
    <div>       
        <ul>
            {% for x in object_list %}
            <li>             
                {{x}} 
             </li>
            {% empty %}
            <p>Empty</p>
            {% endfor %}
        </ul>      
    </div>
</div>
{% endblock %}

При использовании select_related вы должны передать имя поля, которое будет выбрано.

Попробуйте это:

class TestListView(ListView):  
    queryset = File.objects.select_related("entity").all()    
    template_name = "operations/files/test_list.html"
Вернуться на верх