AttributeError: модуль 'django.db.models' не имеет атрибута 'Aqtau'

Я работаю с django в первый раз. И столкнулся с этой ошибкой. Можете ли вы помочь мне решить ее. Ошибка такая, у меня есть много моделей и данных в них, и я поместил эти данные в html как таблицу, после я хочу изменить значения в данных, но в представлениях я не могу искать мои модели

Мои модели py выглядят так: (в city_name я поместил название модели там это Aqtau )

from django.db import models
class Aqtau(models.Model):
  city_name = models.CharField(max_length=255)
  KT_by_projects_10g = models.CharField(max_length=255)
  KT_by_projects_100g = models.CharField(max_length=255)
  KT_on_facts_10g = models.CharField(max_length=255)
  KT_on_facts_100g = models.CharField(max_length=255)

Мои представления для размещения данных в html:

def index(request):
  Aqtau_city = Aqtau.objects.all().values()
  template = loader.get_template('index.html')
  context = {
    'Aqtau_city': Aqtau_city,
  }
  return HttpResponse(template.render(context, request))

HTML выглядит следующим образом:

<tr>
  {% for x in Aqtau_city %}
  <td>Aqtau</td>
  <td>{{ x.KT_by_projects_10g }} </td>
  <td>{{ x.KT_by_projects_100g }} </td>
  <td>{{ x.KT_on_facts_10g }} </td>
  <td>{{ x.KT_on_facts_100g }} </td>

  <td><a href="update/{{ x.city_name }}/{{ x.id }}">update</a></td>

  {% endfor %}
</tr>

urls.py выглядит следующим образом:

urlpatterns = [
    path('', views.index, name='index'),
    path('update/<str:city_name>/<int:id>', views.update, name='update'),

А представления обновляются как: Там я хочу получить модель через getattr, но django db.models не ищет класс Aqtau.

def update(request, city_name, id):
  model = getattr(models, city_name)
  mymember = model.objects.get(id=id)
  template = loader.get_template('update.html')
  context = {
    'mymember': mymember,
  }
  return HttpResponse(template.render(context, request))

Ошибка следующего вида
model = getattr(models, city_name) AttributeError: модуль 'django.db.models' не имеет атрибута 'Aqtau'

Я не знаю, почему вы используете этот метод getattr лично я использую функцию get_object_or_404 в методе update, она выдает исключение 404, если модель не найдена

from django.shortcuts import get_object_or_404

def update(request, city_name, id):
    obj = get_object_or_404(Aqtau, id=id)
    context = {
        "object": obj
    }
    return render(request, "update.html", context)  

Примечание: вы должны включить класс формы модели в метод update для рисования формы атрибутов модели, полную документацию вы можете посмотреть в этой ссылке

Вам нужно импортировать вашу модель в файл view.py вместо использования getattr(models, city_name)

примерно так:

from apps.city_app.models import Aqtau

После этого вы сможете получить объекты этой модели, как показано ниже:

mymember = Aqtau.objects.get(id=id)

Также я предлагаю использовать 'get_object_or_404' для выборки, потому что это предотвратит ошибку DoesNotExist:

mymember = get_object_or_404(Aqtau, id=id)

Если вы хотите использовать 'get_object_or_404', вы можете импортировать его, как показано ниже:

from django.shortcuts import get_object_or_404
Вернуться на верх