¿장고에서 ContentType을 사용하시겠습니까?
¡Perdón por tardar tanto en escribir! 그는 Frontity 블로그에서 프론트엔드를 점유하고 있으며, Wordpress에서 React의 프레임워크를 사용하지 않고 새로운 부서에서 작업을 시작합니다. Quizás hable un poco al honoro de Frontity en alguna entrada futura. Por ahora continuemos con el tema.
Antes de empezar, si no tienes ninguna idea de para que sirve Django visita mi entrada donde hablo sobre uno de los mejores libros para comenzar con Django. Si ya에는 Django anteriormente, sigamos adelante가 있습니다.
ContentType 및 모델 로스
ContentTypes es un modelo especial de Django que registra cada uno de los modelos que existen dentro de nuestra aplicación, tanto los que nosotros creamos, como los que vienen instalados por defector.
Para probar vamos a crear un projecto de django, con un modelo:
Primero creemos un entorno virtual con pipenv. Si no sabes como se usa pipenv puedes visitar mi entrada donde hablo de Pipenv.
pipenv shell
Una vez en nuestro entorno virtual, instalemos Django
pipenv install django
Creemos un proyecto:
django-admin startproject videogameStore
cd videogameStore
새로운 앱을 만들려면 새로운 앱을 사용하세요.
django-admin startapp videogame
cd videogame
Ya que tenemos nuestra aplicación, habrá que crear un modelo, y, como ya te mencioné, Django automáticamente registrará ese modelo en su aplicación ContentType.
Lo primer que haremos será abrir nuestro archivo models.py y editar el contenido
from django.db import models
# Create your models here.
class Videogame(models.Model):
name = models.CharField(max_length=256)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
Hay que recordar agregar nuestra app recien creada a nuestro archivo settings.py
INSTALLED_APPS = [
...,
'videogame'
]
Creamos las migraciones y las ejecutamos. Django에서 ContentTypes를 사용하여 마이그레이션할 수 있습니다.
python3 manage.py makemigrations
Migrations for 'videogame':
videogame/migrations/0001_initial.py
- Create model Videogame
python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, videogame
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
...
ContentType에 등록된 모델을 등록하는 경향이 있습니다. Vamos a corroborarlo directo desde la shell de Django.
python manage.py shell
터미널에서 ContentType 모델로 가져올 수 있습니다.
Justo como cualquier otro modelo, podemos usar su ORM para obtener los datos de los modelos.
Cada objecto del modelo ContentType tendrá una propiedad llamada app_label, y otra model, las cuales son el nombre de la aplicación y el nombre del modelo, 각각의 모델.
from django.contrib.contenttypes.models import ContentType
ContentType.objects.get(app_label='product', model="product")
<ContentType: videogame | videogame>
기본적으로 get_for_model 방법을 사용하는 모델에서 ContentType 지시의 인스턴스에 액세스할 수 있는 방법이 있습니다.
from videogame.models import Videogame
ContentType.objects.get_for_model(Product)
<ContentType: videogame | videogame>
Django의 ContentType 모델 외
Como ya sabes, cada entrada de una tabla tiene un identificador único, la id, mira lo que pasa si accedemos al id de la instancia que acabamos de crear.
ContentType.objects.get(app_label='product', model="product").id
7
예를 들어, ContentType 앱에 등록된 모델을 등록할 수 있습니다. Averigüemos cuales 아들.
>>> ContentType.objects.get(id=1)
<ContentType: admin | log entry>
ContentType.objects.get(id=2)
<ContentType: auth | permission>
ContentType.objects.get(id=3)
<ContentType: auth | group>
ContentType.objects.get(id=4)
<ContentType: auth | user>
Como ya mencioné, cada una de las apps instaladas de manera predeterminada cuentan con sus modelos 각각의.
¿Para que sirve ContentType?
ContentType sirve para relacionar modelos con otros modelos, como si fuera una foreign key (llave foránea), pero con la ventaja de que el tipo de modelo con el cual lo relacionemos puede ser diferente para cada entrada de la tabla.
Imagínate una sencilla red social, donde tenemos diferentes tipos de contenido; un modelo para videos, un modelo para imágenes y un modelo para textos. ContentType nos permite crear un modelo que haga referenciar a cualquiera de nuestros tres modelos de una manera sencilla.
Si quieres ahondar más en el tema por favor revisa la documentación oficial de Django.
Reference
이 문제에 관하여(¿장고에서 ContentType을 사용하시겠습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/prox_sea/que-hace-la-aplicacion-contenttype-en-django-4onh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)