Проблема при попытке сохранить данные в базе данных Django
Я пытался сделать чистый api Django и сохранить некоторые данные в моей базе данных для отработки.
Но у меня возникли некоторые проблемы, когда я пытаюсь сохранить данные.
Например
Я попробовал этот код для метода post
def post(self, request, *args, **kwargs):
form = UpdateModelForm(self.request.POST)
if form.is_valid():
obj = form.save(commit=True)
obj_data = obj.serialize()
return self.render_to_response(obj_data, status=201)
if form.errors:
data = json.dumps(form.errors)
return self.render_to_response(data, status=400)
data = {"message": "Not Allowed"}
return self.render_to_response(data, status=400)
А вот моя валидация формы
from django import forms
from .models import Update as UpdateModel
class UpdateModelForm(forms.ModelForm):
class Meta:
model = UpdateModel
fields = [
'user',
'content',
'image'
]
И модель
class UpdateQuerySet(models.QuerySet):
#def serialize(self):
# qs = self
# return serialize('json', qs, fields=('user', 'content', 'image'))
def serialize(self):
list_values = list(self.values("user", "content", "image", "id"))
return json.dumps(list_values)
class UpdateManager(models.Manager):
def get_queryset(self):
return UpdateQuerySet(self.model, using=self._db)
# Create your models here.
class Update(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
content = models.TextField(blank=True, null=True)
image = models.ImageField(upload_to=upload_update_image, blank=True, null=True)
timestamp = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now_add=True)
objects = UpdateManager()
def __str__self(self):
return self.content or ""
def serialize(self):
try:
image = self.image.url
except:
image = ""
data = {
"id": self.id,
"user": self.user,
"content": self.content,
"image": image
}
data_json = json.dumps(data)
return data_json
Моя проблема возникает, когда я пытаюсь использовать метод, я получаю эту сомнительную ошибку. Как вы думаете, что это такое?
{"user": ["Select a valid choice. That choice is not one of the available choices."]}
Попробуйте с :
data = {
"id": self.id,
"user": self.user.id,
"content": self.content,
"image": image
}
NB : Передайте идентификатор пользователя вместо объекта пользователя.