Как я могу увидеть данные из уже созданной базы данных mysql на Django? - PullRequest
2 голосов
/ 12 апреля 2020

Я новичок в Django и пытаюсь использовать базу данных mysql, созданную и заполненную данными кем-то другим

Я создал модель с тем же именем, что и таблица, которую я хочу Получите данные, мои модели выглядят следующим образом:

class Study(models.Model):
study_name =        models.TextField(default='Unknown')
description = models.TextField(default='Unknown')
language =    models.TextField(default='Unknown')
number_of_years = models.IntegerField(default='0')

база данных подключена, но когда я go администратору, я не вижу там данных

Пожалуйста, помогите мне с этим

Ответы [ 4 ]

1 голос
/ 12 апреля 2020

Пошаговое решение будет следующим:

  1. получите имя таблицы, содержащей ваши данные, я назову ее study_table
  2. и убедитесь, что вы знаете, как Таблица была определена, чтобы вы могли сопоставить ее с django определением модели. Подключитесь к базе данных с клиентом MySQL и выполните следующий запрос:
    DESCRIBE study_table;
    
  3. на основе имени таблицы, типов столбцов и имен столбцов, определите свою модель, чтобы соответствовать всем. Django модели часто используют автоматическое именование, поэтому вы должны принудительно назначить именование, чтобы убедиться, что ваша модель соответствует вашей базе данных. Принципы:

    • Укажите имя таблицы в качестве параметра meta .
    • Создайте поля с именами, совпадающими с именами столбцов, и типы полей , соответствующие типы столбцов. Если взять пример из вашего кода, поле study_name должно соответствовать столбцу с таким же именем в таблице study_table.

    class Study(models.Model):
    study_name = models.TextField(default='Unknown')
    description = models.TextField(default='Unknown')
    language = models.TextField(default='Unknown')
    number_of_years = models.IntegerField(default=0)
    
    class Meta:
        db_table = study_table
    

    Примечание: ваш IntegerField имеет значение по умолчанию в виде строки '0'.

  4. , убедившись, что приложение (я назову его study_app), содержащее вашу модель, включено, база данных настроена правильно в вашем django настройки, попробуйте получить доступ к данным из оболочки администратора (python manage.py shell):
    >>> from study_app.models import Study
    >>> Study.objects.first()
    
    Это должно вернуть ответ, если это не так, ваша модель не соответствует данным базы данных.
  5. , чтобы получить доступ данные проще, создайте страницу администратора , как предложено @ iklina c. Теперь вы можете читать, редактировать свои данные через браузер.

Несколько предложений, которые вы могли бы рассмотреть:

  • study_name должно быть models.CharField(max_length=255) или аналогичным
  • description должно быть пустым models.TextField(blank=True)
  • language, вероятно, должно быть models.CharField с опцией choices.
1 голос
/ 12 апреля 2020

Вам следует создать ModelAdmin экземпляр для вашей модели

Класс ModelAdmin - это представление модели в интерфейсе администратора. Обычно они хранятся в файле с именем admin.py в вашем приложении.

from django.contrib import admin
from myproject.myapp.models import Study

class StudyAdmin(admin.ModelAdmin):
    pass
admin.site.register(Study, StudyAdmin)
0 голосов
/ 12 апреля 2020

Если у вас есть база данных MySQL с таблицами данных, в которых еще не созданы модели, вы можете использовать команду dumpdata для автоматического создания моделей:

https://docs.djangoproject.com/en/3.0/ref/django-admin/#dumpdata

Затем вы можете зарегистрировать эти модели в Django admin. dumpdata следует использовать только в качестве отправной точки, поскольку они генерируются автоматически и не содержат многих функций целостности данных Django.

Удачи!

0 голосов
/ 12 апреля 2020

Здесь есть две вещи

  1. , вам нужно перенести модель python manage.py makemigrations, чтобы эта таблица была создана в БД
  2. Вам необходимо отобразить их в формы для просмотра их или добавить их в admin.py. Этот учебник хорош, если вы хотите начать понимать Django
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...