1
我會用在內容類型對象非主鍵,如下所示:是否有可能使用對象的非主鍵的contenttype?
我的內容類型的模型:
class Vote(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
object = generic.GenericForeignKey('content_type', 'object_uid')
vote = models.SmallIntegerField()
與我的其他模型:
class Task(models.Model):
uid=uid = models.UUIDField(default=uuid.uuid4, unique=True)
title = models.CharField(_('Title'), max_length=128, help_text=_('Title'))
votes = GenericRelation(Vote)
現在,該模式得到建立,我能夠創建對象,而不是檢索: 以下不工作:
t = Task.objects.create(title='task1')
t.votes.all()
我得到以下錯誤:
django.db.utils.ProgrammingError: operator does not exist: uuid = integer
LINE 1: ..."content_type_id" = 19 AND "vote"."object_uid" = 16) ORDE...
現在我明白這個錯誤,我的理解,它試圖評估對的UUID整數。 有沒有一種方法,以表明它應該使用uid
領域而不是pk
Django的?
太糟糕了它沒有參數。 –
你會如何想象API來定製什麼字段是'GenericForeignKey'的目標?我可以拿出兩個選擇,他們都難看:要麼指定每個模型字段名覆蓋的字典到'GenericForeignKey'本身,這是甜的,因爲如果你想定製目標幾款機型,你會最終在GFK定義中有一個很大的洗衣清單;另一個是在'GenericRelation'中指定它,這很醜陋,因爲那麼'GenericRelation'會改變其他地方定義的GFK的行爲。 – koniiiik