Я пытаюсь написать свою модель в Django 1.8, но перед добавлением записи, ссылающейся на другую запись, возникает проблема. Я объясняю:Django refresh/reload Самостоятельная ссылка
Это моя модель:
class Store(models.Model):
created = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=100, blank=True, default='')
description = models.TextField()
parentStore = models.ForeignKey('self')
Это мой сериализатору:
class StoreSerializer(serializers.ModelSerializer):
choices=[(e.id,e.title) for e in Store.objects.all()]
if choices == []:
choices=[(1,None)]
parent = serializers.ChoiceField(source='parentStore_id',choices=choices)
class Meta:
model = Store
fields = ('id','title','description', 'parent')
def create(self, validated_data):
store = Store.objects.create(title=validated_data['title'],
parentStore_id=validated_data['parentStore_id'],
description=validated_data['description'])
return store
Я могу добавить магазин к моей базе данных, используя API, и это ответ :
HTTP 201 Created
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"id": 334,
"title": "***0000000",
"description": "555555555",
"parent": 330
}
Однако, когда я добавить новый магазин Juste после реферирования этого узла (subStore), я сталкиваюсь ошибка. Запрос:
{
"title": "***0000000",
"description": "555555555",
"parent": 334
}
Ответ:
HTTP 400 Bad Request
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS
{
"parent": [
"\"334\" is not a valid choice."
]
}
кажется, что мой сериализатору автоматически не обновляется с новым значением. Когда я перезапускаю Django и повторяю точно такой же запрос, моя запись добавляется успешно.
У вас есть идея?
Благодарим за ответ. Это возможно поможет решить мою проблему, но как я могу заставить некоторые пользовательские варианты? как я: choice = [(e.id, e.title) для e в Store.objects.all()] или choice = [(1, None)] – hzrari
Я ожидаю быстрой перезагрузки этого выбора, переопределяя создать, обновить или __init__? возможно ли это или я должен передумать свою модель? – hzrari
Я не знаком с внутренними структурами рамки, поэтому я не знаю, как динамически обновлять выбор. Вы можете попробовать просить список рассылки [rest framework list] (https://groups.google.com/forum/#!forum/django-rest-framework) (сообщение здесь, если вы получите ответ!) – Alasdair