Как я могу добавить запись в таблицу, определенную в модели django, содержащей поле content_object, используя raw sql? - PullRequest
0 голосов
/ 29 апреля 2011

Я получил модель, определенную так:

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.

from django.db import connection, transaction
cursor = connection.cursor()

cursor.execute("""
     insert into appname_log_entry SET (text, content_type, object_id) 
     calues(%s, %s, %s)""", \ 
     ['foobar', <how to get content type?>, ModelInstance.Id])

Нужно ли устанавливать content_objcet? Если так, то как?

1 Ответ

1 голос
/ 29 апреля 2011

Я не понимаю, почему вы хотите это сделать.

В любом случае поле content_type является просто стандартным внешним ключом. Таким образом, вы можете получить идентификатор так же, как любой другой идентификатор FK, через model_instance.content_type_id.

...