2011-04-29 2 views
0

내가 모델은 다음과 같이 정의되었다 :원시 sql을 사용하여 content_object 필드를 포함하는 장고 모델에 정의 된 테이블에 레코드를 추가하는 방법은 무엇입니까?

class LogEntry(models.Model): 
    text = models.CharField(max_length = 20) 
    content_type = models.ForeignKey(ContentType, null=True, blank=True) 
    object_id = models.PositiveIntegerField(null=True, blank=True) 
    content_object = generic.GenericForeignKey('content_type', 'object_id') 

from django.contrib.auth.models import User 
usr = User.objects.all()[0] 
new_record = LogEntry.objects.create(text="foobar", content_object=usr)    

하지만 일반 SQL을 사용하여 동일한 기록을 만들려면 어떻게해야합니까? 문제는 물론 content_type 및 content_object 필드에 값을 삽입하는 방법을 결정하는 방법입니다.

content_objcet을 설정해야합니까? 그렇다면 어떻게?

+0

http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#methods-on-contenttype-instances –

답변

1

이유를 이해하지 못합니다.

어쨌든 content_type 필드는 표준 외래 키일뿐입니다. 그래서 당신은 model_instance.content_type_id을 통해 다른 FK 아이디를 얻는 것과 같은 방식으로 ID를 얻을 수 있습니다.

+0

django 용 지연/캐싱 로깅 패키지 용 패키지를 만들고 있습니다. 사용할 수 없습니다. orm은 레코드를 삽입하고 원시 SQL을 사용해야합니다. User.content_type_id를 사용하여 무언가를 파악하려했지만 그 속성은 존재하지 않습니다. – Weholt

+0

아니요, 왜냐하면'User'는 일반적인 관계를 가지고 있지 않기 때문입니다. 그러나 위에서 보았 듯이'LogEntry'는 그렇게합니다. –

+0

아 물론. 감사! :-) – Weholt

관련 문제