2015-09-27 8 views
0

Я знаю, что есть несколько вопросов, касающихся этой проблемы, но я еще не решил ее. Я использую DRF в первый раз, и я работаю с вложенными сериализаторами. Мой Ресторан Serializer указует на категорию сериализатор через поле, связанное пробковое как это показывает нижеDRF Исключительное значение: Невозможно назначить - это должен быть экземпляр

class CategorySerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Category 
     fields = (
      'name', 
      'description' 
     ) 

class RestaurantSerializer(serializers.HyperlinkedModelSerializer): 
    category = serializers.SlugRelatedField(
     many=True, 
     read_only=False, 
     queryset=Category.objects.all(), 
     slug_field='name' 
    ) 

    class Meta: 
     model = Restaurant 
     fields = (
      'id', 
      'name', 
      'description', 
      'website', 
      'twitter', 
      'facebook', 
      'instagram', 
      'category' 
     ) 

Я посылаю все необходимые данные для моей конечной точки, чтобы создать новый ресторан через JQuery, но я получаю «Невозможно назначить» [< Категория: Итальянская кухня>] ":" Restaurant.category "должен быть экземпляром категории."

Я понимаю, что мне нужно назначить объект категории категории Ресторана, хотя я не знаю, как получить доступ к моему запросу, чтобы извлечь объект, который имеет значение.

Все советы на это?

Edit: Это данные я отправляю из JQuery в моей конечной

{"name":"Restaurant","email":"[email protected]","password":"1234","category":["Italian food"],"description":"Description test"} 

Edit # 2 См определения модели ниже

class Restaurant(models.Model): 
    name = models.CharField(max_length=80, null=False) 
    description = models.TextField(max_length=300, null=False) 
    email = models.EmailField(max_length=80, null=True) 
    password = models.CharField(max_length=60, null=False) 
    website = models.URLField(max_length=80, null=True) 
    twitter = models.CharField(max_length=60, null=True, blank=True) 
    facebook = models.CharField(max_length=60, null=True, blank=True) 
    instagram = models.CharField(max_length=60, null=True, blank=True) 
    category = models.ForeignKey('Category') 

    def __unicode__(self): 
     return self.name 


class Category(models.Model): 
    name = models.CharField(max_length=80, null=False) 
    description = models.TextField(max_length=100, null=False) 

    def __unicode__(self): 
     return self.name 
+0

Можете ли вы показать точные данные, которые вы используете для кормления 'RestaurantSerializer'? – GwynBleidD

+0

Несомненно. См. Мое редактирование – user1659653

+0

И модель? В частности, какова связь между рестораном и категорией? –

ответ

2

У вас есть ForeignKey от Ресторан в категории. Это означает, что для каждого ресторана есть только одна категория. Но вы отправляете список категорий slugs, и у вас есть many=True в определении SlugRelatedField.

Ваши данные должны быть только {..."category": "Italian food"...}, и вы должны удалить many=True.

+0

Вы правы, Дэниэл, большое вам спасибо за ваш ответ. – user1659653