Отображение поля пользовательской модели в методе Post
Я столкнулся с некоторыми проблемами, касающимися Django-Rest-Framework, метода post.
Есть две вещи, которых я хочу достичь:
- Adding fields in the view of the Post method. --> Here instead of sending the data in Json format, I want to replace the filed names with the Custom model's fields
- And when using '@renderer_classes([BrowsableAPIRenderer])' decorator in a view, the view page shows '[No renderers were found]'.
- When sending the data through post method, it says ==> Object of type Account is not JSON serializable
Вот фрагменты моего кода и изображение для справки...
serializers.py
class CreateTodoSerailizer(serializers.ModelSerializer):
class Meta:
model = Todos
fields = ('title', 'user', 'desc', 'todo_date', 'is_completed',)
def save(self):
todo = Todos(
title = self.validated_data['title'],
user = self.validated_data['user'],
desc = self.validated_data['desc'],
todo_date = self.validated_data['todo_date'],
is_completed = self.validated_data['is_completed'],
)
todo .save()
return todo
models.py
class Todos(models.Model):
user = models.ForeignKey(Account, on_delete=models.CASCADE)
title = models.CharField(max_length=30)
slug = models.SlugField(max_length=50, blank=True)
desc = models.TextField(blank=True)
date_created = models.DateTimeField(auto_now_add=True)
todo_date = models.DateField(default=date.today)
is_completed = models.BooleanField(default=False)
class Meta:
verbose_name = _("Todos")
verbose_name_plural = _("Todos")
ordering = ['-date_created']
def __str__(self):
return self.title
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
return super(Todos, self).save(*args, **kwargs)
views.py
@api_view(['POST'])
def createTodo(request, format=None):
if request.method == 'POST':
serializer = CreateTodoSerailizer(data=request.data)
data = {}
if serializer.is_valid():
todo = serializer.save()
data['response'] = 'Successfully added'
data['title'] = todo.title
data['username'] = todo.user
else:
data = serializer.errors
return Response(data)