def form_valid(self, form): blocks = { 'ru': WordBlock.objects.create(), 'en': WordBlock.objects.create(), 'de': WordBlock.objects.create(), } for lang, block in blocks.items(): for i in range(1, 4): value = form.cleaned_data.get('%s_value%s' % (lang, i)) info = form.cleaned_data.get('%s_info%s' % (lang, i)) if value: Word.objects.create( value=value, info=info, order=i, lang=lang, block=block, ) tag_name = form.cleaned_data.get('tag') tag, created = Tag.objects.get_or_create(name=tag_name) if created: tag.color = Tag.get_random_color() tag.save() Chain.objects.create( ru_block=blocks['ru'], en_block=blocks['en'], de_block=blocks['de'], part_speech=form.cleaned_data.get('part_speech'), tag=tag, ) return super(AddView, self).form_valid(form)
def create_chain(value, order, part_speech, tag_name): ru_word_block = WordBlock.objects.create() Word.objects.create(value=value, order=order, block=ru_word_block) en_word_block = WordBlock.objects.create() Word.objects.create(value=value, order=order, block=en_word_block) de_word_block = WordBlock.objects.create() Word.objects.create(value=value, order=order, block=de_word_block) part_speech = part_speech tag = Tag.objects.create(name=tag_name) tag.color = Tag.get_random_color() return Chain.objects.create(ru_block=ru_word_block, en_block=en_word_block, de_block=de_word_block, part_speech=part_speech, tag=tag)
def form_valid(self, form): self.object = self.get_object() # chain self.object.ru_block.words.all().delete() self.object.en_block.words.all().delete() self.object.de_block.words.all().delete() blocks = { 'ru': self.object.ru_block, 'en': self.object.en_block, 'de': self.object.de_block, } for lang, block in blocks.items(): for i in range(1, 4): value = form.cleaned_data.get('%s_value%s' % (lang, i)) info = form.cleaned_data.get('%s_info%s' % (lang, i)) if value: Word.objects.create( value=value, info=info, order=i, lang=lang, block=block, ) tag_name = form.cleaned_data.get('tag') tag, created = Tag.objects.get_or_create(name=tag_name) if created: tag.color = Tag.get_random_color() tag.save() self.object.tag = tag self.object.part_speech = form.cleaned_data.get('part_speech') self.object.save() return HttpResponseRedirect(self.get_success_url())