[PYTHON] 장고 관리자에서 개체를 만들 때 현재 사용자를 자동 삽입하는 방법?
PYTHON장고 관리자에서 개체를 만들 때 현재 사용자를 자동 삽입하는 방법?
기사가있는 데이터베이스가 있습니다.
submitter = models.ForeignKey(User, editable=False)
다음과 같이 사용자를 가져 오는 위치 :
from django.contrib.auth.models import User.
특정 사용자가 기사를 제출할 때 자동으로 현재 활성 사용자를 제출자 필드에 삽입하고 싶습니다.
누구든지 어떤 제안이 있습니까?
해결법
-
==============================
1.누군가가 대답을 찾고있는 경우에 대비하여 여기에 나와있는 해결책이 있습니다. http://demongin.org/blog/806/
누군가가 대답을 찾고있는 경우에 대비하여 여기에 나와있는 해결책이 있습니다. http://demongin.org/blog/806/
요약: 그는 에세이 테이블을 다음과 같이 가지고있었습니다 :
from django.contrib.auth.models import User class Essay(models.Model): title = models.CharField(max_length=666) body = models.TextField() author = models.ForeignKey(User, null=True, blank=True)
여기서 multiuser는 에세이를 만들 수 있으므로 다음과 같이 admin.ModelAdmin 클래스를 만들었습니다.
from myapplication.essay.models import Essay from django.contrib import admin class EssayAdmin(admin.ModelAdmin): list_display = ('title', 'author') fieldsets = [ (None, { 'fields': [('title','body')] } ), ] def save_model(self, request, obj, form, change): if getattr(obj, 'author', None) is None: obj.author = request.user obj.save()
-
==============================
2.모델에있는 외래 키를 사용자가 원하지 않으면 admin.py override save 메소드에서
모델에있는 외래 키를 사용자가 원하지 않으면 admin.py override save 메소드에서
obj.author = request.user.username obj.save()
DB에 로그인 한 사용자 이름이 저장됩니다.
-
==============================
3.사용자 B가 사용자 A가 만든 레코드를 저장한다고 가정 해 보겠습니다. 위의 방법을 사용하면 레코드가 사용자 B와 함께 저장됩니다. 일부 시나리오에서는이 레코드를 저장하는 각 사용자가 "훔칠" 그것. 이 문제를 해결할 수있는 방법은 사용자를 한 번만 저장하는 것입니다.
사용자 B가 사용자 A가 만든 레코드를 저장한다고 가정 해 보겠습니다. 위의 방법을 사용하면 레코드가 사용자 B와 함께 저장됩니다. 일부 시나리오에서는이 레코드를 저장하는 각 사용자가 "훔칠" 그것. 이 문제를 해결할 수있는 방법은 사용자를 한 번만 저장하는 것입니다.
models.py
from django.contrib.auth.models import User class Car(models.Model): created_by = models.ForeignKey(User,editable=False,null=True,blank=True) car_name = models.CharField(max_length=40)
admin.py
from . models import * class CarAdmin(admin.ModelAdmin): list_display = ('car_name','created_by') actions = None def save_model(self, request, obj, form, change): if not obj.created_by: obj.created_by = request.user obj.save()
-
==============================
4.http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.prepopulated_fields에 따라 prepopulated_field admin 지시문에 ForeignKey를 사용할 수 없습니다.
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.prepopulated_fields에 따라 prepopulated_field admin 지시문에 ForeignKey를 사용할 수 없습니다.
하지만이 스레드가 도움이 될 수 있습니다. 내 대답은 또한 프로 스캔 장 (Pro Django)의 Google 스캔 버전과 연결됩니다. 이상적으로 책을 구입할 수 있다면 더 낫다는 것을 확신 할 수 있습니다. 그러나 Google은 관련 챕터의 대부분을 어쨌든 갖고있는 것으로 보입니다.
from https://stackoverflow.com/questions/2991365/how-to-auto-insert-the-current-user-when-creating-an-object-in-django-admin by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] matplotlib에서 축 값을 변환 (또는 축척)하고 틱 주파수를 재정의하려면 어떻게합니까? (0) | 2018.10.20 |
---|---|
[PYTHON] Keras를 사용하여 모델 출력 w.r.t 가중치의 그래디언트 가져 오기 (0) | 2018.10.20 |
[PYTHON] 오라클 리드 / 래그 기능과 동일한 팬더 (0) | 2018.10.20 |
[PYTHON] django에서 현지 표준 시간대 가져 오기 (0) | 2018.10.20 |
[PYTHON] Python, Popen 및 select - 프로세스 종료 또는 대기 시간 기다림 (0) | 2018.10.20 |