Improve RelatedField and callable default handling
- callable default values will now be properly called - PrimaryKeyRelatedField and SlugRelatedField will now return an appropriate type based on the relation model's Field - mock views now have a request object bound even when public is True
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1,27 +0,0 @@
|
||||
# Generated by Django 2.0 on 2017-12-05 04:05
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('snippets', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='snippet',
|
||||
name='owner',
|
||||
field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, related_name='snippets', to=settings.AUTH_USER_MODEL),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='snippet',
|
||||
name='code',
|
||||
field=models.TextField(help_text='code model help text'),
|
||||
),
|
||||
]
|
||||
@@ -1,3 +1,4 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from rest_framework import serializers
|
||||
|
||||
from snippets.models import Snippet, LANGUAGE_CHOICES, STYLE_CHOICES
|
||||
@@ -23,7 +24,18 @@ class SnippetSerializer(serializers.Serializer):
|
||||
create: docstring for create from serializer classdoc
|
||||
"""
|
||||
id = serializers.IntegerField(read_only=True, help_text="id serializer help text")
|
||||
owner = serializers.ReadOnlyField(source='owner.username')
|
||||
owner = serializers.PrimaryKeyRelatedField(
|
||||
queryset=get_user_model().objects.all(),
|
||||
default=serializers.CurrentUserDefault(),
|
||||
help_text="The ID of the user that created this snippet; if none is provided, "
|
||||
"defaults to the currently logged in user."
|
||||
)
|
||||
owner_as_string = serializers.PrimaryKeyRelatedField(
|
||||
help_text="The ID of the user that created this snippet.",
|
||||
pk_field=serializers.CharField(help_text="this help text should not show up"),
|
||||
read_only=True,
|
||||
source='owner',
|
||||
)
|
||||
title = serializers.CharField(required=False, allow_blank=True, max_length=100)
|
||||
code = serializers.CharField(style={'base_template': 'textarea.html'})
|
||||
linenos = serializers.BooleanField(required=False)
|
||||
@@ -31,7 +43,8 @@ class SnippetSerializer(serializers.Serializer):
|
||||
styles = serializers.MultipleChoiceField(choices=STYLE_CHOICES, default=['friendly'])
|
||||
lines = serializers.ListField(child=serializers.IntegerField(), allow_empty=True, allow_null=True, required=False)
|
||||
example_projects = serializers.ListSerializer(child=ExampleProjectSerializer(), read_only=True)
|
||||
difficulty_factor = serializers.FloatField(help_text="this is here just to test FloatField", read_only=True)
|
||||
difficulty_factor = serializers.FloatField(help_text="this is here just to test FloatField",
|
||||
read_only=True, default=lambda: 6.9)
|
||||
|
||||
def create(self, validated_data):
|
||||
"""
|
||||
@@ -39,6 +52,7 @@ class SnippetSerializer(serializers.Serializer):
|
||||
"""
|
||||
del validated_data['styles']
|
||||
del validated_data['lines']
|
||||
del validated_data['difficulty_factor']
|
||||
return Snippet.objects.create(**validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
|
||||
Reference in New Issue
Block a user