I'm having trouble loading external data for a model that uses a
ContentType foreign key.

I'm using a manager in the models, like the docs say. Unfortunately,
although the docs talk about the importance of a get_by_natural_key
method on a ContentType foreign key, it then launches into a different
example instead. I'm having trouble figuring out just what the manager
would look like. My best guess is to use get_by_natural_key again, and
assign app_label and model lookups, but I could be way off.

# models.py
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.utils.translation import ugettext_lazy as _


class InlineTypeManager(models.Manager):
    def get_by_natural_key(self, title, app_label, model):
        return self.get(title=title,
content_type=ContentType.objects.get_by_natural_key(app_label=content_type__name,
model=content_type__id))


class InlineType(models.Model):
    title = models.CharField(_("title"), max_length=255)
    content_type = models.ForeignKey(ContentType,
limit_choices_to={"model__in": ("Link", "Document", "Image", "Audio",
"Video", "MediaSet", "Flash", "Testimonial")})

    objects = InlineTypeManager()

    class Meta:
        ordering  = ["title"]
        verbose_name = _("inline type")
        verbose_name_plural = _("inline types")

    def __unicode__(self):
        return u"%s" % (self.title)

https://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys


When I loaddata my JSON, I receive the error:

DeserializationError: [u"'image' value must be an integer."]

The point of get_by_natural_key is to load non-integer fields in a
"human-friendly" lookup because hard-coded IDs in the JSON is a bad
idea because of its unpredictability, so I'm guessing my manager is
failing. Or should I use get_for_model()/get_for_models()?

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to