简体   繁体   中英

How to return username instead of user object in DRF?

I want to set a username for each object. Here is my models.py

from django.contrib.auth.models import User
from django.conf import settings


# Tweet Model
class TweetModel(models.Model):
    text = models.TextField(max_length=300, blank=False)
    created_at = models.DateTimeField(auto_now_add=True)
    owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True)
    username = models.CharField(max_length=100, blank=True)

And viewset.py

from .models import TweetModel
from rest_framework import viewsets, permissions


# TweetViewset
class TweetViewset(viewsets.ModelViewSet):
    permission_classes = [
        permissions.IsAuthenticated
    ]
    serializer_class = TweetSerializer

    def get_queryset(self):
        ordered = TweetModel.objects.order_by('-created_at')
        return ordered

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user, username=self.request.user.username)

But it is not working. Error is

django.db.utils.ProgrammingError: column tweets_tweetmodel.username does not exist
LINE 1: ...el"."created_at", "tweets_tweetmodel"."owner_id", "tweets_tw...

Can you help, please?

I forgot to run makemigrations and migrate

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM