Нет такой колонки: AGC.id Django
Я работал с существующей таблицей данных, поэтому я создаю модели с помощью "inspectdb", мой класс не имеет первичного ключа, поэтому django автоматически добавляет первичный ключ с именем="id", когда я делаю миграции и мигрирую. Позже, когда я определяю шаблон, представления и урлы для просмотра таблицы классов на моем сайте, возникает ошибка, подобная этой: no such column: AGC.id Я не знаю, как это исправить, пожалуйста, помогите мне, я ноб в использовании django
Модель:
class Agc(models.Model):
index = models.BigIntegerField(blank=True, null=True)
area = models.TextField(db_column='AREA', blank=True, null=True) # Field name made lowercase.
periodo = models.BigIntegerField(db_column='PERIODO', blank=True, null=True) # Field name made lowercase.
demanda = models.TextField(db_column='DEMANDA', blank=True, null=True) # Field name made lowercase. This field type is a guess.
class Meta:
db_table = 'AGC'
Шаблон:
{% extends "despachowebapp/Base.html" %}
{% load static %}
{% block content %}
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Index</th>
<th scope="col">Area</th>
<th scope="col">Periodo</th>
<th scope="col">Demanda</th>
</tr>
</thead>
<tbody>
{% if AGCs %}
{% for AGC in AGCs %}
<tr>
<th scope='row'>{{ Agc.id }}</th>
<td>{{ Agc.index }}</td>
<td>{{ Agc.index }}</td>
<td>{{ Agc.area }}</td>
<td>{{ Agc.periodo }}</td>
<td>{{ Agc.demanda }}</td>
</tr>
{% endfor %}
{% else %}
<h1>No hay datos </h1>
</tbody>
</table>
{% endblock %}
Просмотров:
def index(request):
AGCs=Agc.objects.all()
contexto={'AGCs': AGCs }
return render(request,'OfertasAGC.html', contexto)
Урлы:
urlpatterns =[
path('admin/', admin.site.urls),
path('', include('webapp.urls')),
path('prueba/',views.index),
]
Модели Django всегда должны иметь первичный ключ, вы можете использовать AutoField или BigAutoField или использовать другое поле модели, но вам нужно будет добавить атрибут primary_key = True.
Например:
class Agc(models.Model):
index = models.BigIntegerField(primary_key=True)
area = models.TextField(db_column='AREA', blank=True, null=True) # Field name made lowercase.
periodo = models.BigIntegerField(db_column='PERIODO', blank=True, null=True) # Field name made lowercase.
demanda = models.TextField(db_column='DEMANDA', blank=True, null=True) # Field name made lowercase. This field type is a guess.
class Meta:
db_table = 'AGC'