Проблемы с внешним ключом django-tastypie

У меня есть модель сообщения и модель сообщения изображения:

class PostImage(models.Model):
    post =  models.ForeignKey(Post, related_name="images")
    # @@@@ figure out a way to have image folders per user...
    image = models.ImageField(upload_to='images')
    description = models.CharField(max_length=100)
    order = models.IntegerField()

Я создал ресурсы deliciouspie для обоих:

class PostImageResource(ModelResource):
    class Meta:
        queryset = PostImage.objects.all()
        resource_name = 'postImage'


class PostResource(ModelResource):
    images = fields.ForeignKey(PostImageResource, 'images', full=True)
    class Meta:
        queryset = Post.objects.all()
        resource_name = 'post'

Когда я пытаюсь перейти к api/v1/post/?format=json, я получаю следующую ошибку:

The object '' has an empty attribute 'image' and doesn't allow a default or null value.

У меня пока нет изображений PostImage.

Если я избавлюсь от строки images = fields.foreignKey в PostResource, это сработает. Если я перехожу к api/v1/postImage/?format=json, ошибка не отображается, просто пустая коллекция.


person AlexBrand    schedule 12.07.2012    source источник
comment
Вы проверили, что все ваши объекты PostImage заполнили поле image?   -  person Lycha    schedule 13.07.2012
comment
У меня пока нет объектов PostImage. Я хочу иметь возможность публиковать посты без изображений.   -  person AlexBrand    schedule 13.07.2012


Ответы (1)


Попробуй это:

class PostResource(ModelResource):
    images = fields.OneToManyField(PostImageResource, 'images', full=True)
    class Meta:
        queryset = Post.objects.all()
        resource_name = 'post'

------- ОТРЕДАКТИРОВАНО -------

Хм...

В вашей модели:

class PostImage(models.Model):
    post =  models.ForeignKey(Post, related_name="images")
    image = models.ImageField(upload_to='images', null=True, blank=True)
    description = models.CharField(max_length=100)
    order = models.IntegerField()

Обратите внимание, что значение null=True и пустое значение=True.

person Vinicius Cainelli    schedule 12.07.2012
comment
fields.ForeignKey совпадает с fields.OneToManyField - person AlexBrand; 13.07.2012
comment
@alexBrand нет. ForeignKey расширяет ToOneField, а OneToManyField расширяет ToManyField =] - person Vinicius Cainelli; 13.07.2012