У меня проблема с использованием GenericRelation
с update_or_create
.
У меня есть следующие модели:
class LockCode(TimeStampedModel):
context_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
context_id = models.PositiveIntegerField()
context = GenericForeignKey('context_type', 'context_id')
class Mission(DirtyFieldsMixin, models.Model):
lock_codes = GenericRelation(
LockCode,
content_type_field='context_type',
object_id_field='context_id',
related_query_name='mission'
)
Я пытаюсь создать или обновить LockCode
, используя миссию в качестве ключа:
mission = ....
LockCode.objects.update_or_create(
context=mission,
defaults={
#some other columns there
}
И у меня есть FieldError: Field 'context' does not generate an automatic reverse relation and therefore cannot be used for reverse querying. If it is a GenericForeignKey, consider adding a GenericRelation.
Это работает, когда я явно использую context_id и context_type:
LockCode.objects.update_or_create(
context_id=mission.pk,
context_type=ContentType.objects.get_for_model(Mission),
defaults={
#some other columns there
}
Что-то не так в моей конфигурации? Или это единственный способ использовать GenericForeignKey
для update_or_create?