Django에서 related_name 사용
related_name
매개변수를 사용하는 방법에 대해 이야기할 것입니다. Django에서 관련 유형을 생성할 때 Django는 기본적으로 역방향 관계를 생성하거나 역방향 관계라고 말할 수 있습니다. related_name
속성을 사용하여 반대 관계에 이름을 지정할 수 있습니다.예를 들어 이해해 봅시다.
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Note(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
content = models.TextField()
in the upper model, we have one too many relations, a user can create as many notes as many he wants. Lets’ try to access all the notes of a currently logged-in user
def get_notes(request):
user = request.user
notes = Notes.objects.filter(user = user)
context = {
"notes":notes
}
return render(request, 'home.html',context)
여기에서는 Notes 모델을 사용하여 현재 로그인한 사용자의 모든 메모에 직접 액세스합니다. 이제 Notes 모델을 사용하여 현재 로그인한 사용자의 메모에 액세스하고 싶지 않고 현재 로그인한 사용자의 메모에 액세스하고 싶다고 가정해 보겠습니다. -역 관계를 사용하는 사용자. 우리는 이미 Django가 기본적으로 반대 관계를 생성한다는 것을 알고 있으며 해당 관계를
_set
객체와 함께 사용할 수 있습니다. 여기서는 현재 로그인한 사용자의 모든 메모를 가져오려고 합니다.def get_notes(request):
user = request.user
notes = user.notes_set.all()
context = {
"notes":notes
}
return render(request, 'home.html',context)
Here we can access all the todos of the currently logged-in users, using
_set
object.
이제 related_name 속성을 추가하고 그것이 제공하는 변경 사항과 단순성을 살펴보겠습니다.
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Note(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="notes")
content = models.TextField()
In the above code we have added
related_name = "notes"
parameter.
def get_notes(request):
user = request.user
notes = user.notes.all()
context = {
"notes":notes
}
return render(request, 'home.html',context)
관련 이름 속성을 사용하면 코드를 더 읽기 쉽게 만들 수 있으므로 Django의 모든 유형의 모델 관계에서 관련 이름 속성을 사용할 수 있습니다. Django의 기본 역 관계를 비활성화하려면
related_name = “+”
를 추가하면 Django의 기본 역 관계가 비활성화됩니다.from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Note(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="+")
content = models.TextField()
this will disable Django's default relation.
Reference
이 문제에 관하여(Django에서 related_name 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ankitdevelops/using-relatedname-in-django-2o05텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)