Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {'custom_answers': [OrderedDict([('user', <SimpleLazyObject: <User: 123>>), ('question', <Question: Вопрос 2>), ('text', 'TExt')]), OrderedDict([('user', <SimpleLazyObject: <User: 123>>), ('question', <Question: Вопрос 1>), ('text', 'tes')])], 'poll': <Poll: Опрос 1>, 'user': <SimpleLazyObject: <User: 123>>}
- {'custom_answers': [], 'poll': <Poll: Опрос 1>, 'user': <User: 123>}
- <QueryDict: {'poll': ['1'], 'custom_answers': ["{'question': 2, 'text': 'TExt'}", "{'question': 1, 'text': 'tes'}"]}>
- {custom_answers': [{'text': 'TExt', 'question': 2}, {'text': 'tes', 'question': 1}], 'poll': 1}
- class CustomUserAnswerSerializer(serializers.ModelSerializer):
- user = serializers.PrimaryKeyRelatedField(
- read_only=True,
- default=CurrentUserDefault()
- )
- class Meta:
- model = CustomUserAnswer
- fields = ('user', 'question', 'text')
- class CompletedPollSerializer(serializers.ModelSerializer):
- user = serializers.PrimaryKeyRelatedField(
- read_only=True,
- default=CurrentUserDefault()
- )
- custom_answers = CustomUserAnswerSerializer(
- many=True, write_only=True, required=False
- )
- class Meta:
- model = CompletedPoll
- fields = ('poll', 'user', 'custom_answers')
- def create(self, validated_data):
- print(validated_data)
- class CompletedPoll(models.Model):
- user = models.ForeignKey(
- settings.AUTH_USER_MODEL,
- related_name='ended_polls'
- )
- poll = models.ForeignKey(Poll)
- ended_date = models.DateTimeField(auto_now_add=True)
- class Meta:
- ordering = ('-ended_date',)
- unique_together = ('user', 'poll')
- class CustomUserAnswer(models.Model):
- user = models.ForeignKey(
- settings.AUTH_USER_MODEL,
- related_name='custom_answers'
- )
- question = models.ForeignKey(
- Question,
- related_name='custom_answers'
- )
- text = models.CharField(
- verbose_name='Текст ответа',
- max_length=800
- )
- class Meta:
- unique_together = ('user', 'question')
- class ApiPollsTestCase(APITestCase):
- def setUp(self):
- call_command('loaddata', 'polls/fixtures/polls')
- self.user = User.objects.create(
- username='123',
- password='123',
- email='123@123.ru'
- )
- self.client = APIClient()
- self.client.credentials(
- HTTP_AUTHORIZATION='Token ' + self.user.auth_token.key
- )
- def test_complete_poll(self):
- data = {
- 'poll': 1,
- 'custom_answers': [
- {'question': 2, 'text': 'TExt'},
- {'question': 1, 'text': 'tes'}
- ]
- }
- response = self.client.post(reverse('api_v1:complete-poll'), data)
- print(CustomUserAnswer.objects.all(), response.data)
- self.assertEqual(response.status_code, 201)
- self.assertTrue(
- CompletedPoll.objects.filter(
- user=self.user, poll__id=data['poll']
- ).exists()
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement