Я работаю над проектом, в котором я сделал «ядро» приложения, оно будет содержать некоторые из повторно используемых моделей в моих проектах, большинство из которых являются полиморфными моделями (типами общего содержимого) и будут связаны с различными моделями.
Пример ниже, я пытаюсь создать модель аудита и будет связан с несколькими моделями, которые могут потребовать аудита.
Это опросы / models.py
from django.db import models
from django.contrib.auth.models import User
from core.models import *
from django.contrib.contenttypes import generic
class Poll(models.Model):
## TODO: Document
question = models.CharField(max_length=300)
question_slug=models.SlugField(editable=False)
start_poll_at = models.DateTimeField(null=True)
end_poll_at = models.DateTimeField(null=True)
is_active = models.BooleanField(default=True)
audit_obj=generic.GenericRelation(Audit)
def __unicode__(self):
return self.question
class Choice(models.Model):
## TODO: Document
choice = models.CharField(max_length=200)
poll=models.ForeignKey(Poll)
audit_obj=generic.GenericRelation(Audit)
class Vote(models.Model):
## TODO: Document
choice=models.ForeignKey(Choice)
Ip_Address=models.IPAddressField(editable=False)
vote_at=models.DateTimeField("Vote at", editable=False)
вот ядро / modes.py
from django.db import models
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
class Audit(models.Model):
## TODO: Document
# Polymorphic model using generic relation through DJANGO content type
created_at = models.DateTimeField("Created at", auto_now_add=True)
created_by = models.ForeignKey(User, db_column="created_by", related_name="%(app_label)s_%(class)s_y+")
updated_at = models.DateTimeField("Updated at", auto_now=True)
updated_by = models.ForeignKey(User, db_column="updated_by", null=True, blank=True,
related_name="%(app_label)s_%(class)s_y+")
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField(unique=True)
content_object = generic.GenericForeignKey('content_type', 'object_id')
а вот и опросы / admin.py
from django.core.context_processors import request
from polls.models import Poll, Choice
from core.models import *
from django.contrib import admin
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
class PollAdmin(admin.ModelAdmin):
inlines = [ChoiceInline]
admin.site.register(Poll, PollAdmin)
Я новичок в django, что я здесь пытаюсь сделать, вставить запись в аудит при вставке записи в опросы и затем обновить эту же запись при обновлении записи в опросах.