{"id":16547188,"url":"https://github.com/rg3915/nocodb-django-example","last_synced_at":"2026-01-07T08:03:56.861Z","repository":{"id":243715313,"uuid":"813212429","full_name":"rg3915/nocodb-django-example","owner":"rg3915","description":"NocoDB + Django + PostgreSQL + Docker","archived":false,"fork":false,"pushed_at":"2024-06-11T11:54:14.000Z","size":883,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-03T13:47:22.375Z","etag":null,"topics":["django","docker","nocodb","postgresql"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rg3915.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-10T17:27:18.000Z","updated_at":"2024-07-15T13:25:08.000Z","dependencies_parsed_at":"2024-11-14T19:46:29.893Z","dependency_job_id":null,"html_url":"https://github.com/rg3915/nocodb-django-example","commit_stats":null,"previous_names":["rg3915/nocodb-django-example"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rg3915%2Fnocodb-django-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rg3915%2Fnocodb-django-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rg3915%2Fnocodb-django-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rg3915%2Fnocodb-django-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rg3915","download_url":"https://codeload.github.com/rg3915/nocodb-django-example/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246135770,"owners_count":20729058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","docker","nocodb","postgresql"],"created_at":"2024-10-11T19:13:48.019Z","updated_at":"2026-01-07T08:03:56.855Z","avatar_url":"https://github.com/rg3915.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NocoDB Django Example\n\n[NocoDB](https://github.com/nocodb/nocodb)\n\n**Doc:** https://nocodb.com/\n\n![](https://private-user-images.githubusercontent.com/86527202/277104231-e2fad786-f211-4dcb-9bd3-aaece83a6783.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgwNDExNjQsIm5iZiI6MTcxODA0MDg2NCwicGF0aCI6Ii84NjUyNzIwMi8yNzcxMDQyMzEtZTJmYWQ3ODYtZjIxMS00ZGNiLTliZDMtYWFlY2U4M2E2NzgzLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjEwVDE3MzQyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRkNDlkMTZiNWU4NTA4NzBhNjg0OGY1NTZmODUzZTM4NGY2ZTRkNzZkMzE5NzhjMzljZmRhZWYwYWNlYmJhOTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.rxO0_tC5zmy1Ax4cZ6c_2WVy1-4ERCJ_pGexW7iRb6c)\n\n\n# Install\n\n## This project was done with:\n\n* [Django 5.0.6](https://www.djangoproject.com/)\n* [NocoDB](https://nocodb.com/)\n* [PostgreSQL](https://www.postgresql.org/)\n\n## How to run project?\n\n* Clone this repository.\n* Create virtualenv with Python 3.\n* Active the virtualenv.\n* Install dependences.\n* Run the migrations.\n\n```\nhttps://github.com/rg3915/nocodb-django-example.git\ncd nocodb-django-example\n\npython -m venv .venv\nsource .venv/bin/activate\n\npip install -r requirements.txt\n\ndocker-compose up -d\n\npython contrib/env_gen.py\n\npython manage.py migrate\npython manage.py createsuperuser --username=\"admin\" --email=\"\"\n\npython manage.py runserver\n```\n\n#### docker-compose\n\nhttps://github.com/nocodb/nocodb/blob/develop/docker-compose/pg/docker-compose.yml\n\nEnter in http://0.0.0.0:8080/dashboard/#/signup\n\n\u003e Create tables on NocoDB.\n\n\n## How does it work?\n\nThis project runs NocoDB along with Django and PostgreSQL.\n\nWith it, you can use the NocoDB interface and Django Admin.\n\n1. First, you need to create the tables in NocoDB.\n2. Then, using the command\n\n`python manage.py inspectdb`\n\nyou retrieve the models of the created tables and edit your `models.py`.\n\n3. Finally, just run\n\n`python manage.py makemigrations` and\n\n`python manage.py migrate`\n\n![](img/nocodb2.png)\n\n\n## Django step by step\n\n\nCreate virtualenv.\n\n```\npython -m venv .venv\nsource .venv/bin/activate\n```\n\nGenerate `.env`\n\n```\npython contrib/env_gen.py\n```\n\nInstall the libs.\n\n```\npip install -r requirements.txt\n```\n\nCreate Django project.\n\n```\ndjango-admin startproject backend .\n```\n\nCreate apps.\n\n```\ncd backend\npython ../manage.py startapp core\npython ../manage.py startapp product\n```\n\n\nEdit `settings.py`\n\n```python\n# settings.py\nfrom pathlib import Path\n\nfrom decouple import config, Csv\n\n\nBASE_DIR = Path(__file__).resolve().parent.parent\n\nSECRET_KEY = config('SECRET_KEY')\n\nDEBUG = config('DEBUG', default=False, cast=bool)\n\nALLOWED_HOSTS = config('ALLOWED_HOSTS', default=[], cast=Csv())\n\n\nINSTALLED_APPS = [\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    # others apps\n    'django_extensions',\n    # my apps\n    'backend.core',\n    'backend.product',\n]\n\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.postgresql',\n        'NAME': config('POSTGRES_DB', 'root_db'),\n        'USER': config('POSTGRES_USER', 'postgres'),\n        'PASSWORD': config('POSTGRES_PASSWORD', 'password'),\n        'HOST': config('DB_HOST', 'localhost'),\n        'PORT': config('DB_PORT', 5431, cast=int),\n    }\n}\n\n\nSTATIC_URL = 'static/'\nSTATIC_ROOT = BASE_DIR.joinpath('staticfiles')\n```\n\nEdit `core/apps.py`\n\n```python\n# core/apps.py\nfrom django.apps import AppConfig\n\n\nclass CoreConfig(AppConfig):\n    default_auto_field = 'django.db.models.BigAutoField'\n    name = 'backend.core'\n```\n\nEdit `product/apps.py`\n\n```python\n# product/apps.py\nfrom django.apps import AppConfig\n\n\nclass ProductConfig(AppConfig):\n    default_auto_field = 'django.db.models.BigAutoField'\n    name = 'backend.product'\n```\n\n### Inspectdb\n\nRun Inspectdb.\n\n```\npython manage.py inspectdb\n```\n\nEdit `product/models.py`\n\n```python\n# product/models.py\nfrom django.db import models\n\nfrom backend.core.models import TimeStampedModel, CreatedBy\n\n\nclass Product(TimeStampedModel, CreatedBy):\n    title = models.CharField(max_length=100, blank=True, null=True)\n    category = models.ForeignKey(\n        'Category',\n        on_delete=models.CASCADE,\n        related_name='products',\n        db_column='nc_t_52___Category_id',\n        null=True,\n        blank=True\n    )\n\n    class Meta:\n        managed = False\n        db_table = 'nc_t_52__Product'\n\n    def __str__(self):\n        return f'{self.title}'\n\n\nclass Category(TimeStampedModel, CreatedBy):\n    title = models.CharField(max_length=100, blank=True, null=True)\n\n    class Meta:\n        managed = False\n        db_table = 'nc_t_52___Category'\n\n    def __str__(self):\n        return f'{self.title}'\n```\n\nEdit `product/admin.py`\n\n```python\n# product/admin.py\nfrom django.contrib import admin\n\nfrom .models import Product, Category\n\n\n@admin.register(Product)\nclass ProductAdmin(admin.ModelAdmin):\n    list_display = ('__str__',)\n    search_fields = ('title',)\n    list_filter = ('category',)\n\n\nadmin.site.register(Category)\n```\n\nRun\n\n```\npython manage.py makemigrations\npython manage.py migrate\npython manage.py runserver\n```\n\nOpen\n\nhttp://localhost:8000/admin/\n\n\n## PG Admin\n\nhttp://0.0.0.0:5051/\n\n\n```\nhost: root_db\nport: 5432\nusername: postgres\npassword: password\n```\n\n\n![](img/pgadmin.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frg3915%2Fnocodb-django-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frg3915%2Fnocodb-django-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frg3915%2Fnocodb-django-example/lists"}