Django Rest Framework Serializer read_only_fields не работаетPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Django Rest Framework Serializer read_only_fields не работает

Сообщение Anonymous »

Я использую Framework Django REST для создания веб -сайта блога для развлечения. Я использую Neon DB для базы данных. У меня есть пользовательская модель, в которой у меня есть атрибут create_at с Datetimetz DataType. Я также установил значение по умолчанию в настоящее время (), а в сериализаторе я установил атрибут для read_only_fields. Но когда я делаю запрос в посте, чтобы создать нового пользователя, он помещается в NULL в поле, а create_at заполняется как нулевая в таблице баз данных. /p>
class Users(models.Model):
user_id = models.AutoField(primary_key=True,null=False,blank=True)
username = models.CharField(max_length=100)
email = models.CharField(max_length=254)
password_hash = models.CharField(max_length=30, blank=True, null=True)
created_at = models.DateTimeField(null=False,blank=True)

class Meta:
managed = False
db_table = 'users'
< /code>
my serializer: < /p>
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = Users
read_only_fields = ('created_at',)
fields = '__all__'
< /code>
my view: < /p>
class UsersList(APIView):
"""
get all users or create a single user
"""
def get(self, request, format=None):
users = Users.objects.all()
serializer = UserSerializer(users,many=True)
return Response(serializer.data,status=status.HTTP_200_OK)

def post(self, request, format=None):
serializer = UserSerializer(data = request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
< /code>
Я попробовал это: < /p>
class UserSerializer(serializers.ModelSerializer):
created_at = serializers.SerializerMethodField()
class Meta:
model = Users
read_only_fields = ('created_at',)
fields = '__all__'

def get_created_at(self, instance):
return instance.created_at.strftime("%B %d %Y")

< /code>
Это не сработало, плюс я не хочу этого делать. Я хочу, чтобы DRF не включал поле create_at и пусть таблица Neon DB установила значение по умолчанию для поля.

Подробнее здесь: https://stackoverflow.com/questions/794 ... s-not-work
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»